{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "train = pd.read_csv('../data/train_xy.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "test = pd.read_csv('../data/test_all.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cust_id</th>\n",
       "      <th>cust_group</th>\n",
       "      <th>y</th>\n",
       "      <th>x_1</th>\n",
       "      <th>x_2</th>\n",
       "      <th>x_3</th>\n",
       "      <th>x_4</th>\n",
       "      <th>x_5</th>\n",
       "      <th>x_6</th>\n",
       "      <th>x_7</th>\n",
       "      <th>...</th>\n",
       "      <th>x_148</th>\n",
       "      <th>x_149</th>\n",
       "      <th>x_150</th>\n",
       "      <th>x_151</th>\n",
       "      <th>x_152</th>\n",
       "      <th>x_153</th>\n",
       "      <th>x_154</th>\n",
       "      <th>x_155</th>\n",
       "      <th>x_156</th>\n",
       "      <th>x_157</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>110000</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.354167</td>\n",
       "      <td>0.604988</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>-99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>110001</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>0.012058</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>110002</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.565979</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>110003</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.208333</td>\n",
       "      <td>0.316209</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>110004</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.208333</td>\n",
       "      <td>0.008061</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 160 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   cust_id cust_group  y       x_1       x_2  x_3  x_4  x_5  x_6  x_7  ...    \\\n",
       "0   110000    group_3  0  0.354167  0.604988  -99  -99  -99  -99  -99  ...     \n",
       "1   110001    group_3  0  0.125000  0.012058  -99  -99  -99  -99  -99  ...     \n",
       "2   110002    group_3  0  0.333333  0.565979    0    0    0    0    0  ...     \n",
       "3   110003    group_3  0  0.208333  0.316209    0    0    0    0    1  ...     \n",
       "4   110004    group_3  0  0.208333  0.008061  -99  -99  -99  -99  -99  ...     \n",
       "\n",
       "   x_148  x_149  x_150  x_151  x_152  x_153  x_154  x_155  x_156  x_157  \n",
       "0      1      1      1      1      1      1      1      1      3    -99  \n",
       "1      1      1      1      1      1      1      1      1      2      2  \n",
       "2      1      1      2      1      1      1      1      1      2      2  \n",
       "3      2      1      1      1      1      1      1      1      2      4  \n",
       "4      1      1      1      1      1      1      1      1      2      1  \n",
       "\n",
       "[5 rows x 160 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(15000, 160)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cust_id</th>\n",
       "      <th>cust_group</th>\n",
       "      <th>x_1</th>\n",
       "      <th>x_2</th>\n",
       "      <th>x_3</th>\n",
       "      <th>x_4</th>\n",
       "      <th>x_5</th>\n",
       "      <th>x_6</th>\n",
       "      <th>x_7</th>\n",
       "      <th>x_8</th>\n",
       "      <th>...</th>\n",
       "      <th>x_148</th>\n",
       "      <th>x_149</th>\n",
       "      <th>x_150</th>\n",
       "      <th>x_151</th>\n",
       "      <th>x_152</th>\n",
       "      <th>x_153</th>\n",
       "      <th>x_154</th>\n",
       "      <th>x_155</th>\n",
       "      <th>x_156</th>\n",
       "      <th>x_157</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>group_1</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.555388</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0.270833</td>\n",
       "      <td>0.770302</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>group_3</td>\n",
       "      <td>0.354167</td>\n",
       "      <td>0.440327</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>group_1</td>\n",
       "      <td>0.208333</td>\n",
       "      <td>0.476509</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>group_1</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>0.955286</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 159 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   cust_id cust_group       x_1       x_2  x_3  x_4  x_5  x_6  x_7  x_8  \\\n",
       "0        1    group_1  0.291667  0.555388  -99  -99  -99  -99  -99  -99   \n",
       "1        2    group_3  0.270833  0.770302    0    0    0    0    1    1   \n",
       "2        3    group_3  0.354167  0.440327    0    0    0    0    4    3   \n",
       "3        4    group_1  0.208333  0.476509    0    0    0    0    1    1   \n",
       "4        5    group_1  0.125000  0.955286    0    0    0    0    2    1   \n",
       "\n",
       "   ...    x_148  x_149  x_150  x_151  x_152  x_153  x_154  x_155  x_156  x_157  \n",
       "0  ...        1      1      1      1      1      1      2      2      2      3  \n",
       "1  ...        1      1      1      1      1      1      2      2      1     10  \n",
       "2  ...        1      1      1      1      1      1      1      1      3      3  \n",
       "3  ...        1      1      1      1      1      1      1      1      1      4  \n",
       "4  ...        1      1      1      1      1      1      1      1      1     10  \n",
       "\n",
       "[5 rows x 159 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x_train = train.drop(['y','cust_id'],axis =1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x_test = test.drop(['cust_id'],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(15000, 158)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 158)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(25000, 158)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = pd.concat([x_train,x_test])\n",
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x16541aff630>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x16541abe080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train['y'].value_counts().plot.pie(autopct = '%1.2f%%')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "y_train = train[['cust_group', 'y']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "for i in range(96,158):\n",
    "    col = 'x'+'_'+str(i)\n",
    "    dummies_df = pd.get_dummies(x[col]).rename(columns=lambda x: col + str(x))\n",
    "    x = pd.concat([x, dummies_df], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cust_group</th>\n",
       "      <th>x_1</th>\n",
       "      <th>x_2</th>\n",
       "      <th>x_3</th>\n",
       "      <th>x_4</th>\n",
       "      <th>x_5</th>\n",
       "      <th>x_6</th>\n",
       "      <th>x_7</th>\n",
       "      <th>x_8</th>\n",
       "      <th>x_9</th>\n",
       "      <th>...</th>\n",
       "      <th>x_1561</th>\n",
       "      <th>x_1562</th>\n",
       "      <th>x_1563</th>\n",
       "      <th>x_157-99</th>\n",
       "      <th>x_1571</th>\n",
       "      <th>x_1572</th>\n",
       "      <th>x_1573</th>\n",
       "      <th>x_1574</th>\n",
       "      <th>x_15710</th>\n",
       "      <th>x_15711</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>9995</th>\n",
       "      <td>group_3</td>\n",
       "      <td>0.437500</td>\n",
       "      <td>0.529445</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9996</th>\n",
       "      <td>group_1</td>\n",
       "      <td>0.270833</td>\n",
       "      <td>0.469741</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9997</th>\n",
       "      <td>group_3</td>\n",
       "      <td>0.354167</td>\n",
       "      <td>0.430999</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9998</th>\n",
       "      <td>group_2</td>\n",
       "      <td>0.312500</td>\n",
       "      <td>0.783653</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9999</th>\n",
       "      <td>group_3</td>\n",
       "      <td>0.187500</td>\n",
       "      <td>0.855042</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 356 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     cust_group       x_1       x_2  x_3  x_4  x_5  x_6  x_7  x_8  x_9  \\\n",
       "9995    group_3  0.437500  0.529445    0    1    1    0    0    0    0   \n",
       "9996    group_1  0.270833  0.469741    0    0    0    0    1    1    0   \n",
       "9997    group_3  0.354167  0.430999    0    0    0    0    2    2    0   \n",
       "9998    group_2  0.312500  0.783653  -99  -99  -99  -99  -99  -99  -99   \n",
       "9999    group_3  0.187500  0.855042  -99  -99  -99  -99  -99  -99  -99   \n",
       "\n",
       "       ...     x_1561  x_1562  x_1563  x_157-99  x_1571  x_1572  x_1573  \\\n",
       "9995   ...          0       1       0         0       1       0       0   \n",
       "9996   ...          0       1       0         0       0       0       0   \n",
       "9997   ...          0       1       0         0       0       1       0   \n",
       "9998   ...          0       0       1         0       0       0       1   \n",
       "9999   ...          0       1       0         0       0       0       1   \n",
       "\n",
       "      x_1574  x_15710  x_15711  \n",
       "9995       0        0        0  \n",
       "9996       1        0        0  \n",
       "9997       0        0        0  \n",
       "9998       0        0        0  \n",
       "9999       0        0        0  \n",
       "\n",
       "[5 rows x 356 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x['cust_group'] = x['cust_group'].replace('group_3',3)\n",
    "x['cust_group'] = x['cust_group'].replace('group_2',2)\n",
    "x['cust_group'] = x['cust_group'].replace('group_1',1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(15000, 356)\n",
      "(10000, 356)\n"
     ]
    }
   ],
   "source": [
    "train_X = x[0:15000]\n",
    "test_X = x[15000:25000]\n",
    "print(train_X.shape)\n",
    "print(test_X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cust_group</th>\n",
       "      <th>x_1</th>\n",
       "      <th>x_2</th>\n",
       "      <th>x_3</th>\n",
       "      <th>x_4</th>\n",
       "      <th>x_5</th>\n",
       "      <th>x_6</th>\n",
       "      <th>x_7</th>\n",
       "      <th>x_8</th>\n",
       "      <th>x_9</th>\n",
       "      <th>...</th>\n",
       "      <th>x_1561</th>\n",
       "      <th>x_1562</th>\n",
       "      <th>x_1563</th>\n",
       "      <th>x_157-99</th>\n",
       "      <th>x_1571</th>\n",
       "      <th>x_1572</th>\n",
       "      <th>x_1573</th>\n",
       "      <th>x_1574</th>\n",
       "      <th>x_15710</th>\n",
       "      <th>x_15711</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>0.354167</td>\n",
       "      <td>0.604988</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>0.012058</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.565979</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>0.208333</td>\n",
       "      <td>0.316209</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>0.208333</td>\n",
       "      <td>0.008061</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 356 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   cust_group       x_1       x_2  x_3  x_4  x_5  x_6  x_7  x_8  x_9   ...     \\\n",
       "0           3  0.354167  0.604988  -99  -99  -99  -99  -99  -99  -99   ...      \n",
       "1           3  0.125000  0.012058  -99  -99  -99  -99  -99  -99  -99   ...      \n",
       "2           3  0.333333  0.565979    0    0    0    0    0    0    0   ...      \n",
       "3           3  0.208333  0.316209    0    0    0    0    1    1    0   ...      \n",
       "4           3  0.208333  0.008061  -99  -99  -99  -99  -99  -99    0   ...      \n",
       "\n",
       "   x_1561  x_1562  x_1563  x_157-99  x_1571  x_1572  x_1573  x_1574  x_15710  \\\n",
       "0       0       0       1         1       0       0       0       0        0   \n",
       "1       0       1       0         0       0       1       0       0        0   \n",
       "2       0       1       0         0       0       1       0       0        0   \n",
       "3       0       1       0         0       0       0       0       1        0   \n",
       "4       0       1       0         0       1       0       0       0        0   \n",
       "\n",
       "   x_15711  \n",
       "0        0  \n",
       "1        0  \n",
       "2        0  \n",
       "3        0  \n",
       "4        0  \n",
       "\n",
       "[5 rows x 356 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn import metrics\n",
    "from sklearn.model_selection import train_test_split\n",
    "from xgboost import XGBClassifier\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "from sklearn.ensemble import ExtraTreesClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn import model_selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5000, 356) (5000, 356) (5000, 356)\n",
      "(3000, 356) (3000, 356) (4000, 356)\n"
     ]
    }
   ],
   "source": [
    "train_x1 = train_X[train_X['cust_group']==1]\n",
    "train_x2 = train_X[train_X['cust_group']==2]\n",
    "train_x3 = train_X[train_X['cust_group']==3]\n",
    "\n",
    "test_x1 = test_X[test_X['cust_group']==1]\n",
    "test_x2 = test_X[test_X['cust_group']==2]\n",
    "test_x3 = test_X[test_X['cust_group']==3]\n",
    "\n",
    "print(train_x1.shape,train_x2.shape,train_x3.shape)\n",
    "print(test_x1.shape,test_x2.shape,test_x3.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:1: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  if __name__ == '__main__':\n",
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  from ipykernel import kernelapp as app\n",
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  app.launch_new_instance()\n"
     ]
    }
   ],
   "source": [
    "y_train['cust_group'] = y_train['cust_group'].replace('group_3',3)\n",
    "y_train['cust_group'] = y_train['cust_group'].replace('group_2',2)\n",
    "y_train['cust_group'] = y_train['cust_group'].replace('group_1',1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5000,) (5000,) (5000,)\n"
     ]
    }
   ],
   "source": [
    "train_y1 = y_train[y_train['cust_group']==1]\n",
    "train_y2 = y_train[y_train['cust_group']==2]\n",
    "train_y3 = y_train[y_train['cust_group']==3]\n",
    "\n",
    "y1_train = train_y1['y']\n",
    "y2_train = train_y2['y']\n",
    "y3_train = train_y3['y']\n",
    "\n",
    "print(y1_train.shape,y2_train.shape,y3_train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1654b9c65f8>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAFKCAYAAAAe6CY/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XeYVOX5xvHvM3MWEFBjR2JHbCB2RI2xF+wtmsSoUaNJ\nLFijMfnFVI3RaOymaaJRY0mMGrti772LICAIFlARRCl7znl+f7yzsjQDu7P7zpy5P9c11+yUnXl2\nlb3n7ebuiIiISPGUYhcgIiIiHUMhLyIiUlAKeRERkYJSyIuIiBSUQl5ERKSgFPIiIiIFpZAXEREp\nKIW8iIhIQSnkRURECkohLyIiUlAKeRERkYJSyIuIiBSUQl5ERKSgFPIiIiIFpZAXEREpKIW8iIhI\nQSnkRURECkohLyIiUlAKeRERkYJSyIuIiBSUQl5ERKSgFPIiIiIFpZAXEREpKIW8iIhIQSnkRURE\nCkohLyIiUlAKeRERkYJSyIuIiBSUQl5ERKSgFPIiIiIFpZAXEREpKIW8iIhIQSnkRURECkohLyIi\nUlAKeRERkYJSyIuIiBSUQl5ERKSgFPIiIiIFpZAXEREpqCR2ASJSPWZWBpYClgGWBZYGugFd2nax\nrmAlyD8HpgEt160vc943r9sfA5PcPe/Y34CItKaQF6lh8wjtZeb+OlkeSstBvjSwOGDzfrXEIcmh\nyaGJcN2S512BLhauuxp0LYXrLpWXmwZ8lsHnDp/5rByfbjCjBNMXoFfQcrMuk8AmQPoe5O8DEyqX\n94Hxlcs4YIq7ext+ZSLSiunfkUg8ZmaE1nYfYLXKpQ8kfcH6QvMyzBXaicOSacj5XmVYrjQr++f8\nLLA00IMQ6vPJ/qpwYAbzbtC3NOQnzHF5P4P3cphgMGWOBkd5OpTfg2wsZO8AY4BhLRd3n9qBP4xI\nYSjkRTqBmXUH1gDWAtYM1136Q9YHskVmPXOJNOR93yRcr8Ss0G65XoyODewYZgDvMqsx39KgHw+M\nTWGUw4SmWc9v+gCyVyF/HXiDEP5vAB+oB0BkFoW8SBVVWuarAZuES2ldKPeH5uVnPWvJFNYxWLsM\nfQlh3gdYlRDgMm9TgDeZlefDgFeaYXQCWeVTT3kqlIZB86utnjQMGOXuaZSyRSJSyIu0g5n1IgT6\nQCgNhNIgSCtJvWIzbNgUGu8tlzWBJWKVW1DNwEhm5fkbwGspvGHweTk8pzQTSs9D+ijwBPCku78b\nqWCRTqOQF1lAZrY4sDFftNKbNofmXuHRJVMYVIZNLTy8MaFrXeJx4D1C6L8MPAk80gzvVbr9m96D\n5ocJof8E8KK7z4xTq0jHUMiLzIOZlYABwJbAJtBlC5i5Wni0exZCfFD5i0Y8K1K8cfKiGk8I/CeA\nRzN43qC5BKXmOVr7T6i1L/VOIS9SYWbLATsCO0EyGNIlw5KzATlslnzRgGdNoBy1VqmmGcCLzGrQ\nz7O1/whwh7uPjlWlSFso5KVhmVlX4GvAjtC0KzT3C4+sm8KuScj7zQlrx6WxzNnaf7YUJvc1jYDm\nW4HbgcfUvS+1TiEvDaMy831NYCcoDQa2grwbLJXCLgnsBOxAWKom0toU4F7gDuDWFD5MoPw55HeB\n3w7c6e7vxa1RZG4KeSk0M1sC2J5ZrfXlQxf8lsDgUmitD0Dj6bLgckL3/h3AfzN4phwm+SWvQHpL\n5YGn3T2LWaUIKOSlgMysJ7AnlA4E3xG8DH2bYdemEOpbAd0jVynF8SFwNyHbb09hcgLJZEhvq9x5\nl7t/HLVEaVgKeSmEyvj6YLBvg+0BeVfYNIPvlGFPwux3kY6WAU8xq1v/lQQsA7sX8quBW7Qlr3Qm\nhbzUrcrhLdsA34Ly/pD1hP4pfCeBbwIrR65QZDxwM3B1Bk+WoTQD/Gbwa4C7NXFPOppCXupKZfLc\nIOBbkHwb0qVglRQOSuBbwNqRKxSZn7eB64B/pPB6AskUSK8HriLM1NcfY6k6hbzUvEqwrwt8C5q+\nA80rwLIpHFgJ9o3RxDmpL68A/wSuSmF8Ak2jofmvwD/c/Z3IxUmBKOSlZplZD+DbkAyBtD8snsIB\nlWDfEm1II/UvBx4CrnC40WGGQXkoZJcDN7v79MgFSp1TyEvNMbO1gB9C+XDIe8CuORxZCuvYu8Qu\nT6SDTAFuBC7P4IkylD+F7ArgQncfFbk4qVMKeakJZtYE7AHlYyDbOhz48v0EjgRWiVucSKcbAVwB\n/DGDySWw/0B+LmE/ff3RlgWmkJeoKpvVHAnJ8ZD2gs0zOKYM+6DtZEU+B/4B/D6FtxJInoX0HOAm\nd08jFyd1QCEvUZjZGsBxUDoMSl3goBIcB6wXuzSRGpQDdwLnZPBQGZJ3IT0XuNzdJ0cuTmqYQl46\nTWWW/DZQOgnywbBkBscm8ENgudjlidSJF4DzPMzOZxpkfwIucPcxceuSWqSQlw5XCfcdITkT0g1h\n7RROTuDbQLfY5YnUqfHAJcAlGXxaAvsX5Oe6+1OxK5PaoZCXDmVmX4fkt5BuDgMz+HU5nPSmde0i\n1fEZcCVh3H50AslTkP4cuEeT9EQhLx3CzAZC+UzItoMBGfy2DINRuIt0lIxwzP2ZGTxVhvKDkJ3i\n7s9ELkwiKsUuQIrFzNYzK98KPAWrbwX/Al4owy4o4EU6UhnYg7DG/hZg9a8BT5uVbjSzvnFrk1gU\n8lIVZramWfl64EVYaXBY9vNaAvui/81EOpMRwv61JKy177UX2DAzu8zMlo9cnHQydddLu5jZqmCn\nA4dArwx+mcB3gabIlYlIMI0wQe/XGUxthvz3wDnuPiVyYdIJFPLSJmbWG/g/sCNgKeD0BI5As+VF\natUk4HfAH3LIpkD2S+Ayd58RuTDpQAp5WShmlgDHhEl1PbvAT8pwNNAjdmkiskDGAb8ELncovwvp\nacC17p5FLkw6gEJeFliYMZ/8BbIBcBTwG+ArscsSkTZ5A/iJw80GyWuQ/sDdH41dlVSXZkTJ/2Rm\ni5vZxcCTsHY/eBK4GAW8SD1bG/iPwePABmsBj5jZJWa2WOTCpIrUkpf5quxUtz8kF0PTEnBmGY4B\nktiliUhVZYTJeT/OoHkipEe4+22xq5L2U8jLPJlZHyhfBtkOsLfDhQYrxC5LRDrUGODIHO4pQel6\nyIe4+4TYVUnbqbteZmNmXczsp1B6HXptA/8FblLAizSElYG7SmGfi8X2g/JwMzuo0qsndUgtefmC\nmW0VJtb56nCSwelo1rxIo5oIHOfwT4PyvZAd6e5vx65KFo5CXjCznmDngx8OgzL4cxnWjV2WiNSE\n24EjU/gghezHwMVablc/FPINzszWg+Tf0LQqnF+C76FRHBGZ3afATwiT88rPQnqou78auShZAAr5\nBlUZY/s+lC6EdUrwrzKsGbssEalpjwPfTeEtwE8BztdxtrVNTbYGZGaLQ+kG4DL4QRM8o4AXkQWw\nOfBKAicmwHlQusXMloxdlcyfWvINxsw2Cd3z3XrD38vhlDgRkYX1X+CgDD77ANL93P2J2BXJ3NSS\nbxAWnAD2OKzXG15WwItIO+xO+Duy8XJgj5jZyWamTKkx+g/SAMxsKSjdBpwXutkeL8OqscsSkbq3\nEvBwGX5UBs6B8q1hOFBqhbrrC87MvgbJjdBzGbi6DLvGLklECukO4JsZTBsL6e7u/lrsikQt+cKq\ndM+fBvYQbLoMvKKAF5EOtAvwQhnWWBHKz5jZfrErEoV8IZlZV7CrgTPhpyV4sKxtaUWk4/UBnk5g\n327AjWZ2lpmVY1fVyNRdXzBh/L18C5Q2g6tLsH/skkSk4ThwHvAjh9L9kO3r7pNjV9WIFPIFYmar\nQ3IPLLoS3FYOa1pFRGIZCuydwbTXIN1BJ9p1PoV8QZjZFlC+DVbpCXcnodtMRCS2l4HtU5j0DqTb\nuPuY2BU1Eo3JF4CZ7QWlB2CzRcN4mAJeRGrFAOCJBHqvCMlTZrZO7IoaiUK+zpnZYWA3wT4J3FcG\n7TApIrWmDyHo+y4FyWNmNjB2RY1CIV+nKkvkTgUuh+8bXGfQNXZZIiLz0Rt4LIGNFoXyg2a2XeyK\nGoFCvg5Vto48BzgLTgcuBbRKRURq3RLA0DJs1xVKd5nZPrErKjpNvKszIeDtr+CHwoXAsbFLEhFZ\nSDOBgxxuBPwId788dkVFpZZ8HamcAX8R8F24GgW8iNSnLsC1FoYa+auZ/Sh2RUWlkK8vvwKOgj8b\nHBi7FhGRdigThhr/D+BsMzsjbj3FpO76OhGOieU8OBvQh14RKZJzgFMAjnf3CyIXUygK+TpgZt8F\n/ganAmdFrkZEpCOcApzjwAHufmPsaopCIV/jwkY3dhN8z+BPgMUuSUSkA+TAdxyuzyDf3t0fil1R\nESjka5iZbQulu2GfclgHr2VyIlJkM4GdcnjkM8g205n07aeQr1FmtgmUH4JtusJtJW10IyKNYTKw\nRQpvfgjpJu4+LnZF9UwhX4PMbG0oPw4bLgoPlKFH7JJERDrRu8AmKUwYAenm7v5J7IrqlZbQ1Rgz\nWxmSB2CNnnCXAl5EGlBv4N4EFlkDyreYmboy20ghX0PMrDskd0LvpWBoosNmRKRxrQPcXobS16B0\nZWU7b1lI+qXVFLsQymvC7QksH7sYEZHItgT+WQI/gLBJiCwkhXyNMLODwA+Hy0rQP3Y5IiI1Yl/C\nOR2cZGaHRC6m7mjiXQ0IE+1Kz8OBXeFK01p4EZE5HeJwzXTIBrj7W7GrqRcK+cjMrAckz0Kf1eG5\nRBPtRETm5VNgQArjXoZ0kLs3x66oHqi7Pjq7CJI14CYFvIjIfC0KXJ+AbwD8InIxdUMhH1EYX/JD\n4Y+lMJNURETmbyDwawNOM7OtIxdTF9RdH4mZ9YPSc3BwF/ibBuFFRBZIBmybweMfQrqOu38cu6Ja\nppCPoDIO/zysvloYh+8euyQRkToyDuiXwdRbId/XFWTzpe76KOwyaOoTxuEV8CIiC2cF4G9lyPcG\nDo9dTS1TS76TmdluwH/hSuDg2OWIiNSxI4HLp0O+gbsPi11NLVLIdyIz6wbJm7DVCnBvSevhRUTa\n4zNg/RTefh3Sge4+I3ZFtUbd9Z3rJPAV4WIFvIhIu/UAbkiAdYEfRy6mJqkl30nMbCUoDYcTu8I5\nscsRESmQ04CzZ0K+hruPiV1NLVHIdxKz8r9g6T1hRAKLxS5HRKRApgJ9UvjwFvdsv9jV1BJ113cC\nM9sO8n3hXAW8iEjV9ST8fc33NbNtY1dTSxoy5M3saDMbbWbTzOxJM9ukA9+rCZJLYfMMDuyotxER\naXAHAptmkFxiZknsampFw4W8mR0AnAv8HNgAeAm428yW7qC3PAayvnBJWZPtREQ6ihH+zmZrAd+P\nXU2taLgxeTN7EnjK3Y+r3DbgHeBCdz+7yu/VC8oj4fvd4ZJqvrSIiMzTwQ7//BjSVdx9auxqYmuo\nlnzoOmcjYGjLfZXtEO8DNuuAdzwLFu0Kv67+S4uIyDz8yoAlgONjV1ILGirkgaWBMvDBHPd/APSq\n5huZ2Ybgh8DvyrBkNV9aRETmaxXg6BKUf9yBw7B1o9FCvhPZabByqm2VRUQ620+Brt0IC+gbWqOF\n/IeEcwqXm+P+5YD3q/UmZtYXfF84LQkdByIi0nmWAU4tQ2mIma0Qu5qYGirk3b0ZeA7YruW+ysS7\n7YDHq/hWJ8PSGRxSxZcUEZEFdzzQ1Qin2DSshgr5ivOAI8zsYDNbC/gj4bzXv1fjxc1seSgdBicl\n0K0aLykiIgttMeC7ZUh+WJl03ZAaLuTd/QbgZOBXwAvAAGAnd59YpbcYAt0MflCllxMRkbb5IZAu\nDewVu5JYGm6dfEcys0UgeQ+OXTx0GIiISFxbZPDUo+7p1rEriaHhWvId7ABIF4ejYtchIiIAHF2G\nbCszWzt2JTEo5KsqGQI75rB67EJERASAfYElUxp0DFUhXyVmNhDSDeBY/U5FRGpGV+CIBMqHmVmP\n2NV0NgVS1djRsEIKg2MXIiIis/k+kPcEvhm7ks6mkK+CMOHODoAfavMbEZGasyqwcw7JsZW9URqG\nQr46toW8K+wduw4REZmno0qQrgdsEruSzqSQr47dwz71a8WuQ0RE5mkw0DsFDotdSWdSyLdT6Ppp\n2gv2TqAIvUBTCdtBrkLYCPBrwLNzPOd0oHfl8R2Atxbgdc8nfAjqDqwEnAjMaPV4DvwMWK3ynNWB\n38zxGr8nHDPQi7n3IXiK8AE9X4BaRKTxlIF9EmjataG67N1dl3ZcgA0Ah6EOXoDL/g79HR51GOnw\nC4fFHd6tPH6WwxIO/3V4xWFPh9UcZnzJa17j0M3hOocxDvc6fNXhpFbPOcNhGYc7K8/5t8OiDhdV\nHn/JobvDgw73Oyzi8GrlsdRhA4fnauD3p4suutTu5VYPf69ZPXZ2dNZFLfn22x16ZKHFW++mAzcB\n5wBbEFrVPye0qi+rPOcCQot7N6A/cBXwLnDzl7zuE4TfzwGEVvz2hEmuT8/xnD2BnSvP2QfYsdVz\n3gTWA7YCtiHsRjys8tjZlfs3XOifWEQaydZA2QldkA1BId9uyV6wSwm6xC6kClLCSbxd57h/EeBR\nYDThRN7tWj22GLApIaTnZ3PC4X/PVG6PAu4Adp3jOUOBEZXbLwGPAbtUbq8LDAfGAWMqz1sXGAlc\nydxd+yIic1oU2DQH2yl2JZ0liV1APTOz3sAGsEfsUqqkJ7AZ8GvC+PlywLWEAO9LCHir3N/acpXH\n5udbwIeE1rwTPkj8ADi11XN+DEypvG+ZMLZ+BrOWta4FnEnoBTDgLGANwgfys4E7gV8SPmydD2y5\nED+3iDSOncvw1PZmlrh7GruajqaWfPvsAubF2gDnakIQf5VwVO7FwLdp3/8qDxIC+o+Eg/9uAm5j\n9tb39YQPFNdVnnMlYdjgH62ecyShi/4N4IjKcxYDBlVu3wKcS/hg0NyOekWkuHYAsh40yFI6teTb\npbQHDMphqQLtgLMq8AAwjdCyXo4QmqsRZrU78AGzt+Y/IMw/nJ/TgYOAQyu3+xFm8R8J/F/lvlOA\n04BvtHrO28BvK987pw8JpwU/QphZv2alxtUIAT+88hoiIq1tDPTMYOoOfPk4YyGoJd9GYZc7doQ9\nCxTwrS1CCPJJwN2E45hXJQT90FbPm0II2c2/5LU+Z+7PkyVCt7u3es6cv8oS818SdyJwEmEpX8bs\nLfeWuQUiInNKgB1KkBSpC3a+1JJvu/XCLnfbx66jyu4hBO+ahMltpwDrAN+tPH48oZt9dcJa+p8B\nKxBmxrc4hNDdf2bl9u7AHwiz4zetvO7phLkM1uo5v6m8Vj/g+cr3fG8eNd5beY2rKrc3IXTj3wWM\nJfxvvebC/uAi0jB2NLh5oJkt5u5TYlfTkRTybbdOCKiiHVE8mdBtPh5YEtiPEL4trexTCK3u7wOf\nECa43cnsqwveYfZW+c8IrfKfVV53GULAtx6Tv7jy+NHABEIL/YeV+1qbDgwBbmh131eBiwjDAd0I\n4T/nCgERkRY7AF4irKm7NW4tHcsqG7rIQjKzc2DF42BsU+xaRERkYa3QDOMvcPcfxa6kI2lMvs1K\n/WCAekJEROpSvzJh3LHQFPJtlgyAdRpn/2MRkULpU4IuhZ+8o5ZoG5hZD6B3mJAmIiL1pw+QrWpm\n5gUet1ZLvm3WBEwhLyJSr1YDsm6EmcCFpZBvm0q6F21mvYhIo+gz1xdFpJBvm7WhV3M47EBEROrP\nqi1frBazio6mkG8TWwf6F3SnOxGRRrAosESKQl7m1jQA+ut3JyJS11YHddfL3LLlYcXYRYiISLv0\nTSDpG7uKjqSQb5O8KRzgIiIi9asPYAp5mcXMSuCJ9kYXEal3KwHNy5hZYfeMUcgvvK6zXYmISJ3q\n3vJFly97Vj1TyC88hbyISCF0meuLolnokDezK83s6x1RTJ1QyIuIFELTXF8UTVta8osD95nZCDP7\niZl9tdpF1bhus12JiEidKn5LfqEnG7j7Xma2DHAQcAjwSzO7D7gcuMXdm6tcY61RS14axN7AE7GL\nEOlAM1q+KOxyqTbNKHT3icB5wHlmtiFwKPAPYKqZXQ1c6u4jqldmTVHIS2MoPZeTfzCrt28l1IEl\nxfI5MA6Awp5C165lA2a2PLBD5ZIBdwDrAq+b2Snu/of2l1hzFPLSGPKxJfgb8CvgbXgX2AAYSMHP\n7ZKG8RZwNQAz4xbScdoy8a7JzPY1s9uAMcA3gPOB3u5+iLtvD+wPnF7dUmtGpS2jkJdGcCgwGngJ\n0q3hOYNLgKuA4UAeszaRdsq++Kqww8xtacm/R/hw8E9goLu/OI/nPAB80p7Caljlz1r25c8SKZQB\nwAOQTwFOhdFXwqhp8BVgELA+6sqX+jPrQ2phQ97cF24owswOAm509+kdU1JtM7O+wPDwOWbryNWI\nxJIDVwC/BsaG5sKGhK78pWPWJbIQXgH+DcCi7j41bjEdY6FDvtGZ2VeASXADYaRCpNE9DxwP9ii4\nh+3ABxGutd2W1LLHgXuZ5rl3/5/PrVP6J7jwJoOlMCF2HSI1YkPgYfCPge/BqG5wDXAR8BStVimJ\n1JgpQIl3Y5fRkRTyC8ndHZJJMDF2KSI15ivAX8A/Ay6FSSvAncDvgbuAj6IWJzK3KUDO2NhldCSF\nfJvYRLXkReanBPwQeAd4Gpo3Dy36iwgt/JEUeFWy1JXJpLhCXubSPArG6M+UyP+0CfAY+EfAofBW\n17Bt1kXAM6grX+KajAPjY5fRkRTybeKjYUQauwqR+rEkcAX458CF8HFvuB04F7gbmBS1OGlEOfAZ\nCS173hWUQr5tRsM7ZfU5iiysEnAsofH0OMzcFJ4ELgCuBUahf1bSOT4DHEMhL/MwGqaXNC4v0h6b\nAU+CTwQOhhFdwk56FwPPUuCNRqUmTPniK3XXy1xGz3YlIu2wNHAl+DTgXPioF9wWvuQeirt3psT1\n8RdfjYlYRYdTyLfNSCCHV2PXIVIgJeBEws7ZD8GMjcNJt+cTNtF+G3XlS/WMA0q84+6FXtzZrlPo\nGpW7TzXr8io8MgC+F7sckQL6OvAM+ATgBBh+I7zZHE6/24xw1mVT1ALbZwZwPzCMMDa8PLAz8NX5\nPP9TQq/Gu4QW6KaV57f2HPASs0YRewPbzfGaLwP3EXZqXx/YqdVjkwgnsh1JY5y/9Q4pOY/ELqOj\nqSXfZs33w/2FPdRApDYsC1wDPh34HUxcFm4lbLBzHzA5anFtdythtG9f4CjCFsBXEcJ8XjKgB+Gz\nT6/5PGcM4cPPdwltj8UIyxVbXvPzyvvuBBxECPzhrb7/DsKh4Y0Q8CnwPmXCDg6FppBvu4dhXBPF\n3kdBpEaUgFOAD4D7YcaG8BihK/96QsDVS1d+M/AGIVBXIqwu3Lpy/cx8vucrhJb7esw/hPchbEvQ\nizDNYQ/C72RU5fFJhJMC+xFa+asAH1YeewUoA2u16SeqP+8DOUZY21FoCvm2ezRcFb63R6TGbAM8\nB/4e+AEwLIG/AZcBL1D7h4bmlcucg6VNVLfN0EzoAVikcnvJyn3vE1r17wLLAdMIh2ruUsX3rnXj\nAaOZMMBRaAr5NnL3idA0QiEvEksv4LrKrPwzYOLScAthVv5QWi+Rqi1dgRWBhwhd6Tkhat4BqnnY\n6b2ELvvVKrcXAfYGbgL+ShiT70MY69+U0NL/I3Ap8HoV66hF4wDjJXcv/J6LmnjXLs1D4f5VqO8p\nQCJ1LgF+Av4T4F6Y/iN49KXQ17YOIcBWBCxmjXPYh1kfSEqEiXfrEhYWVMMjwGvAocz+V34tZu+S\nf5swUW8X4EJgP8LY/1+AlStfF9FYmsl5LHYZnUEh3z6PwIgfhH8ly8auRUTYAXgRfBxwPLxxC7yW\nhm7pzYD+1MZfvSUIE+SaCTPtewI3Vu5vr8cql0P48j9LKWFr4X0JM/ZzQrADLEXo0l6jCvXUms+A\nyTTRAOPxoO769qr01T8atwoRmcMKwL8gnwb8EiYsCTcTWs4PMP9Z7J2tiRDw0wi7b7R34tujhL9K\nBxF6B77Mw0BfwqhHyzyBFnPeLpKRX3zVEGOtCvl2cPd3oGlc+NciIrUnAU6vnIJ3B0xbN/xzPQ/4\nF/F2LX+rcplECJ0rCXsArF95/D7gP3N8z/uE7vyZhIlz7wMTWz3+KOEDzJ7A4oTx/anMe3vgCYTu\n/G0qt5cmDGc8T1hW9yHzX7Nf717DKfGMuxd6O9sWtdBxVeeah8L9B6LfpUiNGxwuPhY4Dl7/L7ya\nhRbvZoTx+876VzyDEOSfEibErQNsy6xm11Tm3gPgj8yaV/AeYdnb4sDxlfueJbS+b5jj+7YiLNFr\n7TbCkryW2URNwF6E7vsM2BVYdKF/qto3AxiBk3N97FI6i7nXy+LS2mRmBwJXh8Woq8YuR0QW2Ezg\nN2AXOz7J6A4MBDYmdKFL8bxK6MGBVd397ai1dBJ117ffzVD+HP4euw4RWShdgF+Bf2xwC3y+TljW\ndh5hmVlDdOY2mNdxSrzYKAEPCvl2c/fPILsW/poWd6aKSNHtAbwGPgry3eHVclhG9hdCt3gWtzqp\ngpnAcJyc62KX0pnUXV8FZrYZ8HjYfWL72OWISLvNBH4Bdqnjk40ezOrKL+ra8aJ7nZb5Cn3d/a24\nxXQehXwVmJlB03DYrw9cW0tbbohIu90E/BRsWJj4NoCwwc7/WqImteVfOK/zumfeP3YpnUnd9VXg\n7g7Nf4F/O3wSuxwRqap9gDfAR0C+C7xcgj8RtoZ9DXXl14OZwDDyRuuqB7Xkq8bMlgcbB5eW4Aex\nyxGRDjMdOB3sT+BTwkz8TYENUVd+rXoWuA0HVmukSXegkK8qs/LtsP6O8JzWzIs0hBuAn4END/2i\nLV358zvzXTqfA5eS8iF3eO57xi6ns6m7vqryv8LzSViMKSLFtz/wJvgwyHaCl0ph05orCBO91JUf\n3xhgIgnORdV4OTPb0sxuNbPxZpab2R7VeN2OopCvrtshmRQOtxaRxrEmcBfkU4ET4Z2eoZF/PmG7\n2c+jFtfYnsIpMZJwAHE19ABeBI4i9BPUNHXXV5mZnQdLHAvjk7BfpYg0pmuAn4ONDM2p9Qhd+cvF\nraqhfAyI/BhAAAARkElEQVRciAPHuPul1X55M8uBvdz91mq/drWoJV99l8InJaj6/08iUlcOBN4C\nfxWy7eFFg8uAv+EMQ3tndYYngBKf0MBbkirkqyxssuB/hd9kMCV2OSISXT/g3kpX/hAY28O4jtCV\n/zjhmFmpvs+A58nJOd/dG3bARCHfMX4FU7JweLWICEB34ALwqcDfYcqqcA/hz8RthONfpXqeBnJm\nApfELiUmhXwHCOcU5xfCOdnsBz6LiAAcQji58iVIt4HnLYzw/R14E3Xlt9dnwONkOH9y949ilxOT\nQr7jnAUzp8OZsesQkZo1ALgf8inAUTBmEfgncAFhPHl61OLq14NAynTgjMiVRKeQ7yDh02P2O7g4\nh7GxyxGRmtYTuAT8c+CvMHlluBv4PXA76hBcGBOBZ3GcX7p71X9zZtbDzNYzs/Urd61Wub1itd+r\nGrSErgOZ2aKQvA0HLwmXxy5HROrKC8DxUHoEcofVgEHA6qh59mWuIWck48lZw92r3hdiZlsBDzD3\nGvkr3f2war9feynkO5iZHQf2B3jDwoYZIiILYwpwCtiVjk83vgJsRlh33y1uZTVnJPAPAPZ39xvj\nFlMbFPIdzMy6QjIK9loebtQxtCLSRjnh6LvfAO9AE+FQnIHAUjHrqhE5cBkpH/EcOZu5wg1QyHcK\nMzsUuCIchbRR7HJEpO49A5wA9ji4hy78QYQu/Ubtyn8eCPvODXL3p+IWUzsU8p3AzBJIXoP1+8CT\nZSjHLklECuET4GSwq8FnwBLM6srvGreyTjUDuICUz/mXu38rdjm1RCHfScxsc+BRONfgxNjliEih\nhL5q+C0wPnTlb0Toyl8yZl2d5B7gCZpx+rr7mNjl1BKFfCcysz9AlyHwagn6xi5HRArpCeBEsCfD\n/O++zOrKL+KsoDG0HPx5irufE7eY2qOQ70Rm1gOS12HQV+GhcuMOnolIx/uYEPb/BJ8ZJucNInTl\nd4lbWdXMAC4l5VOeIWdLd89il1RrFPKdzMy2Ae6Hi4GjY5cjIoWXAxcCZwPvhYBv6cpfImZdVXAr\n8ALTcPq7+6jY5dQihXwEZnYZdDsSXirBGrHLEZGG8ShwEtjToSt/TULrfhXqryt/OHAtAEe6+1/i\nFlO7FPIRmFlPSF6GdVeCp8phloyISGeZCJwApRshnwlLE2blr0t9dOV/BlxCyjTuw9lFa+LnTyEf\niZltAvYEnFbWGQoiEkcO/AE4B/ggLLvbGNgE+ErMur6EAzfgDGMKztru/l7skmqZQj4iM/sJ2Bnh\nyKSvxy5HRBrag4Q198+FIF2L0JW/MrXVlf8ycBOgrWsXiEI+IjMrQ/IwLDsQXktq96OziDSO9wld\n+f+GvBmWYVZXfuyRxY+AP5Exkxvc/duRq6kLCvnIzGxlKL8C2/eA20qQxC5JRITQlX82cB4wMRyG\n09KVv3iEcqYDfyblE8aQs7G7fxKhirqjkK8BZrY92N1wdAkuil2OiMgchhK68l8MN9cGNgVWonO6\n8nPgWnJG8jnORu4+vBPetRAU8jXCzI4A/gwXAENilyMiMg/vEs64/w/kKSxH6MrvR8d25d8DPI4D\nO7v7PR34ToWjkK8hZnYO2Elwq8FuscsREZmPFPgd2B/APwpd+QMJ3fmLVfmtXgL+A8AJ7n5+lV+9\n8BTyNSRMxCv9G7ruDk+Uwv6TIiK17C7gVLCXw811CLPyV6D9XfnjgCvIybkSOFzr4ReeQr7GVPa3\nfwyW6QfPJtA7dkkiIgvgHeA4KN0KeQa9mNWV35b5xFOAP5IynefI2crdZ1Sz2kahkK9BZtYbkueh\n/9LwaBl6xC5JRGQBpcBvwC4EnwSLMKsrf9EFfIlm4HIyJjCRnPXd/YOOqrboFPI1yszWh/LjsFtX\nuKmkE+tEpP7cBpwG9mrouu9HmJW/wpd8SwZcT84ImnE2d/fnO6PSolLI1zAz2xXsv3CShW0nRUTq\n0RhgCJRuD135vQnj9uswe1d+DvwH5xUyYA93vzNCsYWikK9xZjYEuEBH04pI/ZsJ/ArsEsc/MboT\nWvYbEUYlbweexYEDtGVtdSjka5yZGXAucAKcDxwXuSIRkWq4GfgJ2BuhK/+rhLl7YRb9FTErKxKF\nfB2oBP1ZwCnwW+DHkSsSEamWUcCWYO+C8xt3/1nsiopEs7nqQGVt6I+BX8BpwOmEY6JEROqZA5cD\n74LzIwV89aklX2fM7BTgd3Ay4fCIWjoDUkRkQTnwf8CZACe7+7lx6ykmhXwdMrNjgIvgqHClDhkR\nqSsK+M6ikK9TZvY94M9wKPAXg3LskkREFkBO6In8AyjgO5xCvo6Z2XfAroIDgKusY4+BEhFpr8+A\nA/NwCJcPcfeLY1dUdAr5Omdm+4FdB3uW4HqDLrFLEhGZh/eAXTJ4ZSZk+7v7bbEragQK+QIws93C\nAc87luCG0oJvEC0i0hleBganMOFjSHd29xdiV9QoNGOrAMIn4nww3DsdNklhROySREQq7gQGZTDh\ndUg3VMB3LoV8Qbj7fZBtBCPHwIYZ3BG7JBFpeJcAuzrMuBPSLdx9fOyKGo1CvkDcfRikG8G0u2A3\n4Ay0aY6IdL4MOB44BvALId/L3adGLqohaUy+gMysRNgW7+ewt8OVpnF6EekcU4Fv5nCHgR/r7pfE\nrqiRKeQLzMz2hPK1sHoX+G8CfWOXJCKFNh7YJYXXmiHbV0fFxqfu+gJz91s0Ti8ineNOYL0UXp8I\n2SAFfG1QyBecxulFpGNNB4YAuwCf3A/pBu7+cuSipELd9Q1C4/QiUn2vAAek8KZDfjJwkStUaopC\nvsHMGqdfuQtck8Cg2CWJSN1xwuFYJ+fgb0J6gLu/ErsqmZu66xtMZZx+fRj7Imzu4SSombHLEpG6\n8QEwOIfjgOZLIN1IAV+71JJvUGaWAKeC/RL6A9eWw7WIyPzcDhycwZRPID3Y3TWbt8apJd+g3D11\n9zPAB8IbI2GDHH5P2MRCRKS1acCxhMm7k++FtJ8Cvj6oJS+YWTfCtPsTYFAOV5Rh7dhliUhNeJkw\nuW64Q34icIkm19UPteQFd5/u7icBW8GzY2FAHjK/OXZpIhLNZ8BPgY1yeGs45Bu6+8UK+PqilrzM\nxswWAU4HOwXWcbiyDBvFLktEOo0DNwFDUnjfIT8LONPdp0cuTNpAIS/zZGYbQvJ3yPvDyQY/B7rH\nLktEOtQw4JgchpagdAfkQ9x9ZOyqpO3UXS/z5O7Ph53y8p/C75th9RSuAvLYpYlI1U0FTgXWdXho\nHLC7e7arAr7+qSUv/5OZ9YHS7yDfF9bL4PwybB27LBFpNwduAI5PYUIO+RnA2eqaLw6FvCwwM9sC\nkvMh3Rj2yOGcEqwRuywRaZPXgaNzeLAEpVsgP8HdR8euSqpL3fWywNz9MUgHAt+CO94LE/OGAB/G\nLk1EFtgU4CRggMOjY4HB7tleCvhiUkte2qSytn4IlE+HRbrB6eUQ+F1jlyYi89QMXAn8NIUPM8h/\nBZzr7jMiFyYdSCEv7WJmywA/B/shrJDD7xP4BmCxSxMRIOxieS1wegpvJ1C6AfIfufvY2JVJx1N3\nvbSLu09092PA+8G7d8MBwKYZPB67NJEGlwPXA2uncDAw9g5gfffsAAV841DIS1W4+zD3dDdgO3jh\nNdgC2DaHewkzeEWkc+TAzcCAFL4JjBoKbOKe7enuL8WtTTqbQl6qyt3vh3QDYH945GXYEdggCy2K\nNHJ1IkWWAdcB66awNzDsUWAL93Rnd382bm0Si8bkpcOYmQHbQvk0yLaDlVI4NYFDgUVilydSEM3A\n1cAZKYxMoHwfZL9294djVybxKeSlU4Rtckungn8DlsjghASOApaMXZpInZoOXAGcmcL4pLLW/Qx3\nfyZ2ZVI7FPLSqcLueZwEpcOhSxl+UIYTgRVjlyZSJ0YDfwL+ksKkMnA9+Jnu/krkwqQGKeQlCjNb\nFjgWkiHgi8K3gVMN+sUuTaQGZcAdwCU53FOC0lTILiec7T4icnFSwxTyEpWZ9QSOgOQUSHvB9jkc\nUYI90cY6Iu8DlwOXpvBuAskLkF4MXOfun0cuTuqAQl5qgpl1Ab4JyVGQbgqLZXBwGQ4DNohdnkgn\ncuAh4FIP57r7TMivAS7TLHlZWAp5qTlmthZwKCSHQbo09E/hiAQOBJaKXZ5IB/mEcJzzJSkMTyAZ\nCelFwFXuPilycVKnFPJSs8wsAXaG0mHge0C50o1/uIX19+XIFYq0lwPPAH8GrslhhgP/Ab8UeND1\nB1raSSEvdaGyR/53IDkC0rVh2RQOT+C76LhbqS8OPAvcCFyXwjsJJO9Beilwubu/F7c+KRKFvNSV\nygY7GwGHQvkgyBaFzTI4vBx2+dK6e6lFLS32lmAfl0DyCaQ3VO580N21JaRUnUJe6lbluNu9oPw9\nyLYNuzR/3WHfEuwFrBC5QmlsLcF+AyHYxyeQTGoV7A8p2KWjKeSlEMxseWBPKO8L+TbgZdgohf0S\n2Ad16UvncOBpZrXYxyeQfNwq2B9WsEtnUshL4ZjZEsCuYPuADYa8G/RJYa8EdgW+BjRFrlKKYybw\nFOHkt+ta1rN/DOn1zAr2LGqJ0rAU8lJoZtYd2AHYHZI9IF0GemSwcwl2MxgMLBe5SqkvOfASMBS4\nL4eHHKaXIfmoVbA/omCXWqCQl4ZhZiVgfWC3SuBvCGawQQrbJ6GFvwWavCezc2AEIdSHAvelMDmB\n0gywRyC7F7gfeEHBLrVGIS8Nq7J//mCwnSHZFpqXDY+smcI2ldDfElgpYpUSx3hCbg8F7k7h/QQs\nh/IzkN5TeeBJd58RtUyR/0EhL8IXS/NWIaT616BpW2juEx5dvhm2bvriIfoRZvJLcYwHniQE+92V\nc9kBml6D5pZQf9jdP41WokgbKORF5qOyAc8WhNDfGtL1w6z9RTPYsgRftxD6G6PDdOrJh4Slbc8C\nTzs8lcHEllAfC813EUL9AXefGK1MkSpQyIssIDPrAQwEtoTy14EtIOsGZQ+z99dvCq38/pVLH7T1\nbkwOjCNMknsJeBF4shnGVZZWJFMgfwbypwiJ/4y7j4tUrEiHUMiLtFFlb/31CMHfD5L1gHUhXTw8\no0sOa+awfhJCv+UDwEqAxSm6sCYDbwEvEwL9hQxedJhSaaGXPw0PZF8EOjBKe8NL0SnkRaqoMra/\nLLOa8/2haX3I14Gse3hW9wz6OaxXCf+1gBUJO/QtFqfwmjcTGAuMAka3uh6ehuuWMMehyxiY+Syz\nmvAvAe8o0KURKeRFOkEl/FdktvDvsh6ka0HeZdYzu2fQO4eVy7BiKQT/nJclKV5PQEYYK28J8JYQ\nfyuDt3J4vymsT4cwy73pXchGQDay1TeMAt5w96kRfgCRmqSQF4nIzMqE8P8qc6V50yrhseZlmG06\nf5ccls9g5RKsVA7fugSw+JdcetI5KwJSwrnoHwMfVa7ndfnIYUIWricZTE3CGHqL5BOw0dA8nNmb\n76MIrXJtDSuyABTyIjWuMva/HPP8IJCsDKUVIf8KpD340iTvkkO3HBZx6A70AHoYdC9BVwst5dQh\n8xDWmbe6j1aX1rcr35cBU0swdT4zDUvTIZkMfAz5h5BOZO7kn0gI89HuPqUdvzIRqVDIixREZUig\nB/Nvynf/kksXZiV3zhypvoD3T2HezfZJ7j6tI392EZk3hbyIiEhBadsuERGRglLIi4iIFJRCXkRE\npKAU8iIiIgWlkBcRESkohbyIiEhBKeRFREQKSiEvIiJSUAp5ERGRglLIi4iIFJRCXkREpKAU8iIi\nIgWlkBcRESkohbyIiEhBKeRFREQKSiEvIiJSUAp5ERGRglLIi4iIFJRCXkREpKAU8iIiIgWlkBcR\nESkohbyIiEhBKeRFREQKSiEvIiJSUAp5ERGRglLIi4iIFJRCXkREpKAU8iIiIgWlkBcRESkohbyI\niEhBKeRFREQKSiEvIiJSUAp5ERGRglLIi4iIFJRCXkREpKAU8iIiIgWlkBcRESkohbyIiEhBKeRF\nREQK6v8B85c2hrQqW1MAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1654b8382e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y1_train.value_counts().plot.pie(autopct = '%1.2f%%')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1654b9d8f98>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAYHv3nx4cikQAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1654b9f74a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y2_train.value_counts().plot.pie(autopct = '%1.2f%%')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1654b9d8eb8>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAFKCAYAAAAe6CY/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XecXFX9//HXZ+ZOKKEZeouIEkRqKBIUKUoTBGnSlGb5\nCsJPQRRRFAULoohgR0GIUqSIFEW6SEdAg9INJISWhJhG+t57P78/zl12s+xuks3Mnpk77+fjMY8t\nM5m8Ccm+7zn33HPN3REREZHyqcQOICIiIo2hkhcRESkplbyIiEhJqeRFRERKSiUvIiJSUip5ERGR\nklLJi4iIlJRKXkREpKRU8iIiIiWlkhcRESkplbyIiEhJqeRFRERKSiUvIiJSUip5ERGRklLJi4iI\nlJRKXkREpKRU8iIiIiWlkhcRESkplbyIiEhJqeRFRERKSiUvIiJSUip5ERGRklLJi4iIlJRKXkRE\npKRU8iIiIiWlkhcRESkplbyIiEhJqeRFRERKSiUvIiJSUip5ERGRklLJi4iIlJRKXkREpKRU8iIi\nIiWlkhcRESkplbyIiEhJqeRFRERKSiUvIiJSUip5ERGRklLJi4iIlFQSO4CI1IeZVYHlgaHdHj2/\nXsT3KkPDu3kGngJZH4/5wFxgXh8f5wJTgMnFY6q7Zw38zxeRXqjkRZqcmVWANYB1gfWKj8Xn1fWh\nOhyytQlFvRiWyWG5HJbz0O8rACtWYGgFhhoYC/d56uGROaSEj/Mc5hA+zjWYbzC/Eh7e22+amw2Z\nDjYZstcgm0go/0l0HQh0Pia5+5yB/WmJSHfm3us/SBEZBGaWAMPptcBrbwdbDzrWAK92/aqqw5op\nrG8wPOn6ZcPofyC/fPFo5Fk6BzoIBwDdB/I9+3xiBq/l8LrBjOStBwbVeVCdAvkrkD4NPNvtMdbd\nFzTwP0KkNFTyIoPAzAxYH9iseGwOta0g2xjyWtcrl89gnRyGV2H9ylt6n3WB1SnXcpqUtx4QdB4U\nvAw8ncKzBrOKAx3LofYSdDwJ/gwLHwBMcv1QE3mTSl6kzsxsVd4scjaDZCvwzSArzncvn8FmDlsm\n4SXvpqvAV4qUutk5ofS79/kzDk+k8HIN8uJ11VlQeS4cAHS9EHjG3dMYyUViUsmLDJCZLcdCI/PK\nFlDdEjpWC69IHEaksFXtzb5nc8LsvEVKXUbzgedZuNOfSsPnM4t1R5V5YI9Cdj/wIPCgu0+Ok1dk\n8KjkRRaTma0BvB/YEZKdIBsZzpUbsH4HjExgc+sq842AWn9vKQ3lhNMATwP/AB5wuC+D14vir70E\nHfcQSv8h4N/u3hEprEhDqORFelGcQx8B7BgeQ3aBBRuEZ9fpgJ1r4antgPcQFrZJ83NgAqHTHwTu\nS+HxKqQGlflQeRTS+9BoX0pCJS/Cm6W+IbAr8EGo7R6m3SvApinsnIRB/PsJ6+ekPOYC/6RrQH9v\nCpOL0f6Ql2DBvcADwJ3As1rYJ61EJS9ty8zWp6vU94COtUOpj0xhtyQ8tQNaDNduHHiJYjAP3J/C\nmGK0X3sFOm4CbgHucvc3YiYVWRSVvLSNYrS+JXAg1A6Bjo3DM5umsEdR6jsBK8cLKU1qDnA3odtv\nSmF8ApZC5X7Ibgb+CjyhUb40G5W8lFqxW9wouop9fVgxg/2rsB+wC7Ba1IzSisYCtwI352EWf34F\naq9Cx3XADcDftYhPmoFKXkrHzGqE9j4Ako9BuhqsmsLHEjiweEqr3qVe5gH3AjcCf0zhtSRcr5/f\nBH4D8Fd3nxk3o7QrlbyUQnHN+h7AgZDsD+lKsF4KhxTFPgqo9v8mIkvNgTGEwfx1Kfync1r/bsiu\nBq529xlRI0pbUclLyzKzlYB9wA4C2wfyZWHjbsW+Jdp0RuJ6kTDCvy6HvxvYAvBrwS8lLNzL+//1\nIktHJS8tpbid6h5Q+SywD+QJbF1MxR8AbBw5oUhfXgF+D1yUwvMJJK9BejEw2t3HRg4nJaWSl5Zg\nZmsDn4TkeEjXhc1T+FQxYtd169JKHHgYuAS4PIPZVUgeLAr/al2WJ/WkkpemVayM3w0qx4HvB0MM\njqjAcYSd5jQVL61uLnA9cHEOd1XCHvv5NcV0/t2azpelpZKXpmNmawLHQu146BgOm6TwuQQ+AawS\nO55Ig7xE13T+uASSV7pN578QOZy0KJW8NIVi1L4r2HHA/lCrwKEGx1nYdU6jdmkXTthF91Lgigzm\nVKF6H2TnATdodC9LQiUvUZnZ6sAxkHwO0g3CrVk/l8CRwLC44USimwP8CfhlBvdXIXke0rOBy9x9\nfuRw0gJU8hKFmW0K9jWwQ6BSgY8Vo/YPoFG7SG8eAr6fww0VSCZD+kPg19poR/qjkpdBZWabg50B\nfhCsk8EXEzgabS0rsrieBn4I/N7BZ0P2E+An7j4pcjBpQip5GRRmtiVUvgn5AbB+Ct8oyn1I7Ggi\nLepl4HzgFxnMzyG/GDjX3Z+PHEyaiEpeGsrMRhbl/lEYnsIZCRyF9o4XqZdpwC+A81KYVgW7BvLv\nu/u/YieT+FTy0hBmtk1R7vvCBil8M4GPo3IXaZS5hBX5309hQgLVOyA7G/ibboHbvlTyUldmth1U\nvgX53rBhUe5HAEnsaCJtIgWuBb5X3CAneRTSk9z9/tjJZPCp5KUuzGx7qJ4J2Z7wrqLcD0PlLhKL\nA7cBp2UwpgqVayA/1d3HRw4mg0glL0slLKir/gCyPWCjFL6VwKHotq4izSIn7KR3agpTHPJzgbO1\nR357UMnLgJjZqsC3ww5178zgOwkcjMpdpFnNAn4AnJNDPg3SrwCXunsWOZg0kEpeloiZJcBxUP0u\nLDsUvlOFE9CCOpFWMQE4zeFKg+Q/kH7B3f8WO5U0hkpeFpuZ7QrJzyHbBD4FfBdYI3YsERmQh4DP\nZ/BIFSo3QP4l3de+fCqxA0jzM7P1zKrXAHfB1iPgEeA3qOBFWtko4OEqXA6stQ/Y02Z2rpnpVo8l\nopG89MnMqsAJUP0+DKvBecW17tpbXqRc5gDnAd/NIJ0J6enAb9w9jRxMlpJKXnoVNrNJLoJsKzie\nMDWvA3yRcnsV+JrDaIPkX5Ae6e5Pxk4lA6fpelmIma1oZueDPQIbbwYPAj9HBS/SDtYBLrVwvn7D\nzaEyxsy+Wiy4lRakkby8ycz2geRiSFaHb1fgC2jVvEi7mgd8C/iBQ3WMRvWtSSUvmNkywDnAF2DP\nHC6swNtjxxKRpvAwcGQKzwP5GcAPda6+dajk25yZjYDkGmAz+FEF/h9aWCciC5sHfBP4oUP1n5Ae\npsvtWoNKvo2Z2VFQ/RW8vQbXJjAydiQRaWoPAUekMKEDshMIO+apRJqYFt61obC4rnIZMBo+viw8\nroIXkcUwCvh3AkctC/wWKteY2bDYqaRvGsm3meLSuGuhtj78ugqfiB1JRFrStcCnMpgzBdLDtTVu\nc9JIvk1YcDLYQ7DZ+vC4Cl5ElsLBwJNVeP9qwJ1mdnaxgZY0EY3k24CZrQ6V30G+F3wROBsYEjuW\niJRCDpwLfNXBboXsUHefGTuVBCr5kituKnMVrDgMLqvC3rEjiUgp3QYclMG8/0K6t7uPi51INF1f\nWsX0/OnAnbDjqvCECl5EGmgP4B9VWO9dkDxmZjvGTiQq+VIKW1DahcB34JsGd1TCdpUiIo20CfBo\nAjusDPY3MzsmdqJ2p+n6kjGzoVC5GuzDcJHBMbEjiUjbWQB8zuFiA34AfNXd88ih2pJKvkTCArvk\nr1AbCX+qwJ6xI4lI23LgfOAUwG6E/OPuPityqLajki8JM3snJHfAKuvBLQlsEzuSiAjwF+BjGXQ8\nDek+7j4hdqJ2opIvATPbFpJbYfhKcHsCG8aOJCLSzRPA3im8NgPSj7j7Q7ETtQstvGtxZvZhqN4L\nI1eGh1XwItKENiMsyNtuFajcY2ZHxE7ULlTyLczMjgX7M+w9BO6uwmqxI4mI9GEN4G9V+HgCXG5m\n/xc7UTtQybeg4hr4bwC/hf+rwHUVWD52LBGRRVgGGG1wIsCFYaAijaRz8i0mXAPPz4H/g28Dp6P7\nv4tIa3HgeOBCB45098sjByotlXwLMbMK2G/BjgrXwOsgWERaVQ58ymE04Ie6+zWxE5WRputbhJkZ\ncB5wNFymgheRFlchDFYOB+wPZnZA7ERlpJJvHV8HvhBm6g+PnUVEpA6qhHP0BxvY1Wb2kdiJykbT\n9S3AzE4EfgrfIZyDFxEpkw7gkBxuzCH/iLvfGjtRWajkm5yZfRy4LNwH/ly0yE5EymkBcEAOt6SQ\nf9jd74qdqAxU8k3MzPYFux6OsXCjBxW8iJTZPGC/HO5cAPme7n5P7EStTiXfpMxsZ6jcBh+twdUG\nSexIIiKDYC6wdw73zodsN3d/IHaiVqaSb0JmthVU74edloW/VsIGEiIi7WI2sGcGD8+CdKS7j4ud\nqFWp5JuMma0Jyb9gszXg3iqsEDuSiEgEU4GtU3jlWUi3d/fZsRO1Il1C10TMbAhUr4dVVoebVPAi\n0saGATclkGwClYuKvUJkCankm0T4C2w/B3sv3JjAerEjiYhEtjkwugL5YcDJsdO0IpV88zgB/NPw\nmwrsEDuLiEiTOAQ4FbBzzeyDsdO0Gp2TbwLhL67dDl+owI9jxxERaTIZsGcOd8+EbKS7j4+dqFWo\n5CMzs7UheQJ2WgVurehSORGR3kwFRqbw6tOQjnL3ObETtQJN10dkZlWoXgnDVoIrVfAiIn0aRliv\nVN0U7DdaiLd4VPJxfQ3yneCqBNaInUVEpMltCVxSAT8CODp2mlag6fpIzGwHsPvg6xU4K3YcEZEW\ncpTDFXMh21Tn5/unko/AzFYK5+FHrgMPVDVNLyKyJGYAm6Yw8SHIdnb3PHaiZqXp+ijsPKitA39Q\nwYuILLGVgcsSyHdE18/3SyU/yMxsV/BPwXlV2DB2HBGRFrULod8r3zezzSKHaVqarh9EZrYcJE/B\n9uvDPVUdY4mILI15hMvqxj4F6TbunsZO1GzUMoPrDGA4XKSCFxFZassCv08g2xz4fOw0zUgj+UFi\nZluC/RPOqsDXY8cRESmRzwO/mAfZxu4+IXaaZqKSHwRh05vkEdhocxiTwJDYkURESmQGMCKFKX92\nzw6InaaZaM54cBwN6Ui4SAUvIlJ3KwPnJ5Dvb2Z7xE7TTDSSbzAzWwGSF+Cg1eAP2oZRRKQhHNg5\ngwfHQ/oed18QOVBT0Ei+8U4BVoWzVfAiIg1jwM+rkG0IfCZ2mmahkXwDhTvMVV6AU5aFH8SOIyLS\nBo52uOJ/kG7g7rNjp4lNI/nG+jasWIOvxc4hItImvmXAqsCJsZM0A5V8g5jZe4BPwllVWCV2HBGR\nNvEO4LMG1a+ZWdv/8FXJN4ydBmtlcFzsICIibeZ0IFkB+FLsJLGp5BvAzDYAPg5f0SVzIiKDbm3g\npApUTzGz1WOniUkl3xhfhpVdCzxFRGL5MpAMAY6PnSQmlXydmdlaUPkMnFKFobHjiIi0qVWBT1Yg\n+YKZLRs7TSwq+fo7CZapwAmxc4iItLmTgHQYcHjsJLGo5OvIzJaH6glwQhXeFjuOiEibGwHsk0Ny\nqpm15YZkKvn6OgSyFdr8FJCISBP5UgXSdwO7xU4Sg0q+rpLj4UM5bBg7iIiIALAzsEUKlZNiJ4lB\nJV8nZrYZpO+F4/RnKiLSNAw4PgHfy8zWjJ1msKmQ6uczsGoK+8XOISIiCzkEqEIbLsBTydeBmS0H\n1WPh09r8RkSk6QwD9jVIPhk7yWBTydfHXpCtCMfGziEiIr062iDd3Mw2j51kMKnk6+NAeHcKG8fO\nISIivfowsEoGHBk7yWBSyS8lMxsC1f3hkCR2FhER6csQ4ONVqH2ina6ZV8kvvV3DtfEHxs4hIiL9\n2g/oWBvYLHaSwaKSX3oHwvAUtoidQ0RE+rUzsGwG7BM7yWBRyS8FM6tAcjAcmoRrMUVEpHktA+xR\ngaRtrnVWyS+dLcLND/aOnUNERBbLPgbp9mY2LHaSwaCSXzo7Qy2HUbFziIjIYtkbQvftGTnIoFDJ\nLxXbGbZ3aNtbFYuItJj1gHd3AB+KnWQwqOQHKJyPr34Qdq3GziIiIkviAzWovT92isGgkh+490C6\nclitKSIirWMU0LGxma0YO0mjqeQHbidIHHaInUNERJbIKAiXRG0XOUjDqeQHbiRsksLysXOIiMgS\neTcwNKMNVk2r5AesthVsVYudQkREllQFGGVgpZ+KLWXJm9kJZjbOzOaa2UNmVtcpmbDvcb5pG+2M\nKCJSMttWoLZ17BSNVrqSN7NDgR8B3wRGAo8Dt5rZanX8bd4O2XLQVncsFBEpkY2ABWubWamvgS5d\nyQMnAxe6++/c/RngOGAO8Mk6/h6bLfRBRERazEYQFt9tGDlIQ5Wq5M2sBmwD3Nn5PXd34A7quwx+\n07BoY706vqWIiAyejd7ySRmVquSB1YAqMKnH9ycBa9Xx93kHvCNv/ZvSzAJOAjYgXCWwI/Bot+cr\nhD/OSo/HjxbxvucTVq8uDwwHvgjM7/Z8DnyDcAC9PPAu4Ds93uNcYE3C/7bzejz3MOHKl3wROURE\n+rIWsFxGyUs+iR2gNdlweEcJVtZ/CngKuBxYG/g9sBvwdPH1xB6vvxn4NHBwP+95BfBV4FLC5Mlz\nwDGEg4Nzi9d8H7gQ+B3wHsKBxTHAKsCJwL8JSypuJhT5PoRtpjcFMuB44CLKd4wqIoPHgHfm8IRK\nvoVMIbTAmj2+vyZvbaylUNsA1q/f20UxD7gOuAno3N3xm8XXvwTOAtbo8WuuB3YF3t7P+z5ImBE4\ntPh6OHAY8I8er/kosFe311zR7TXPAlvStZvgFsAzhJL/QfH90i+KFZGG27AGT64bO0UjlWoo5O4d\nwGN0u/FAuNyNDwEP1PF3WjOMdFtZSjgeWqbH95cD7uvl9ZPpGsn3532E/wWPFF+/UPy6fXq85k7g\nv8XXjwP303XL3s0JMwAvAy8Wr9sceB4YzVun9kVEBmJVIOk5KCyVso3kIZzAvdTMHiMMDU8mnPi9\ntB5vbmZVYJW3jnJbzQqE6fRvE86fr0kYTT9I76eoLgVWAg5YxPseTphQ2RFwwoHEccBXur3mNGBm\n8ftWCVPy3yWM+Cm+/z3CqQMjTO+PAHYnjOT/CpwJDCGc///A4vwHi4j0MAywVWOnaKTSlby7X11c\nE38WobnGAHu6++t1+i2GARVYvU5vF9NlhCsL1yX8VdgaOIIwEu/pEuAThGLtz92Egv4V8F5gLPB5\nwszH14vXXEU4oPgD4Zz8GOALwDrAkcVr/q94dBpNOMgYBWxcZJxAODAYD5RgiYSIDLJVgXxY7BSN\nZOEKM1lcZrYBMA5uI4wsy2AuYWS9JqE0ZxPOzXe6F9iFMK2+qL0BdiIU8Q+6fe9yQmHPLr4eTlic\nd3y313y3eN1TvbznFGD7IsdjxWsfKp5bA/gb4Xy9iMiSuBA4Lgdq7l7Ky3VKdU5+kCyz0IdSWI5Q\n8NOAW4H9ezx/MWH7gcXZ/GcOb50gqhCm3b3ba6q9vKavf2NfBE4hjPQzoKPbc51rC0REltSqEH74\nrBw5SMMs8XS9mY0GLnb3exqQpxWUqORvIxTvxoTFbacSps+P6faamcC1wI/7eI+jCdP93yu+3rd4\n7ZaE0fd/gTOA/ejaV2BfwuK59Qgj8H8Wv6a3RX23F+/xu+Lr7Qgr7W8hTNcnRX4RkSU1tPsn0yIG\naZiBnJNfGbjDzF4knKgd7e6v1DdWUyvavQzbHc8gTJu/QlhqcDChfLuPsq8qPh5G717q8fpvEA6M\nv1G87+qEgu++Iv5nxfMnEFbtr0OYuv9Gj/eeRziff3W3760L/BQ4lvD/4HeU44BLRAbfmxXYc2qx\nNAZ0Tt7MVieskDqaMPS7gzCne0NxGVtpmdmOwL1hw5h3x44j0kCfIPzTlsabTTiozQgzXjXCFTD9\njcMywq6VHcXnywMr9njNnOJ90+LrzvftvlB1bvE+Tjh11/09MsIAt1hvXDoLKAbwI9z9v4t4cUsa\n0Or6YqX6ecB5ZrY1YVj1e2CWmV0G/KKsf2C8ubx8UavMRVrdG05lJjDf8LxrScXiSgh9MpTQP62+\nC3QjvUy4eGQZAIcp82H+/LDjdF/d2kHop2WLj8vNgTXmLPya1wi9vRzhz3/qApg1NbxvQujwFwg7\nvNaAV+bAmnPC/zcIk3ErAyvU6+KkJjOH8Ge/5H+7W8ZSXUJnZmsTlpjvTvjrcjNh15KnzOxUd+/r\nRG4rWxA+zO//VSIt7wbrWguZE34aPk1YIzGOcKpmEvA6MA0qMz0cEGThR2YKTC8eRiijoYSB4gp0\nHQB0fuz+eWknTxfTbOCHhC0g+ttgstOlhKLeaxGvy4FzCEtmtiSU+CTgs8Xz1xDOiL0P+A/hAKOv\nM3VlMJZwJXGJf6APZOFdjXCS9VhgD8JG4+cDV7j7zOI1BwC/pe/VWq1sVvgwu/9XiZRKhXDp43DC\nfQR6kXcfq08mXA45FngBfALMfQ3mvg5TpoLNAJsHnvY+hlqGztJ3VsQWOgDo+bGMWyTMIxwYLVfn\n9+2c2e9832HF9yYSZhJeJWyXMZdwZeoxdf79m03XBT1pP69qaQMZyb9G+Bd/JfBedx/Ty2v+Rjh+\nL6Oi3WfFTSHS1NYoHrv0/rTTrdxnEmYIniXMHb8I81+F+a/D1KmGTQeb49BhvV5lWaPrdPSK9H4g\n0Pn5EJr/tIETLh4ZTv031rydUOadd1BfjrCJ5XWEmtsKeCdwA+HimGmEfatywv/K99Q5T2wNKHkz\n+wDwZcJ1x2sD+7v7jfV6/yU1kJI/GbjG3ef19QJ3nw68Y8CpmtvshT6IyFJaidAo2/f+dDggKKp5\nHuESym4HBB0vw4xJMGMqMB0qs4oDgl6mCKqEA4LOGYK+ZgdWIJxeiHFA8BfCGZBP1fl97wWeJMzB\ndv/J/24WXkM8njARszfwE8JFN0OB3xBOHQylPBa8+dmcfl61pIYStvG8mHD4FNUSl7y7/74RQVqI\nputFolmWMNzcqu+XvHnaICXc1OgZwmmD8ZC9DG9MgjemGK9Nh8obDguMvJcpggphpDuUcBzS3xqC\n5anP4vO/EJY8HMtbF8ovjfuLx9H0PzuQFhkOAqYSRrqdawJWJZzDH1HHXLHNBox5nnvdfqC7+y2E\nuZjOG6RFVbq96wdB8ZdhZtwUIrIInRsl9bNZ0psHBDlhIWHnOoLxkL8EsyfC7Ndh8nSwmY7N6/1K\ng66FhV0zBH3NEvS1sPAvhAmKY4BVBvCf25f7iseRLPrmmfcQ7k+1FuHEbPdjn5y+N6VsVbOBClNj\nx2gklfwScvfMbMhUeLXUNzUQaS8VwpC1n6XsjnWVe+fCwueAcd0XFhpTpi3JwsIwYn+dMHLenrCR\n45Ti+WF0LZK7A3iDhW8EOZHw/gsIE84TCQcQnffPuo+wQupgwqVwnUuJhvDWq4AnE6bzjyu+Xo1w\n8PLPIucUwsr7MgmT9JMip2golfzATIAJKnmRtrUkCwunExYWPkdYRzChWFg4GaYWVxr4jPDS+3t5\nrxqh8DvPH/+ZrlmBv9C1buA1wmVvKwMnFd97lDD67r5pJMDOvUT/M+ESvM6rFWqE21j8hbAifx/q\newqhGczCySj1jq0q+QHpeAHGb0E5t4ASkbpaBdihePRioZF+94WFYwkLC1+B6ZMIQ/0Z8M8eCwu7\n//rODW4uxFkJY0P6XkvgLLyw8JO9ZBtBuc7B9zSNlDB3Uloq+YGZAOMyVPIiUldLurDwv4SDgueB\nFyF9Gd6YCG/8z3htWnGlwSIWFi7OlQbLUc6fdjOooJKXXkyAV6tvPRQWERksCbBJ8ehDnwsLx3Vb\nWDjFmDStuNKg246F3fVcWNhzP4LFWVjYbOYBC6gS/mDqxsyGAu+iqxw2NLMtganuXtffa3Go5Afm\nRZhXCStV1oydRURkERZjYeFCOxZOJBwQFFsY+0s9FxY6Nrf3AwLoXFi4eFcaxNqxsGu7tvF1fudt\nCcsdO1dm/Kj4/mh6PynSUAO6C127M7MRwLNh+6jdYscREYmo+8LC5wmz368SBkGdBwRz6HfHwu5X\nGvS3H0E97yo9BrgegJU7t2QvI43kB2YsVOfBv5ZVyYtIe1vkwsJulx7O4a07FhYLC6d37lg4u+8d\nCxMW3rGwv3saLGrHwklAlZc8LW/Bg0p+QNw9N6s9DmP62IdTRETeannCHXC27vslb5426CCsH+i2\nY2H6CsycCDP/Z11bGC/BwsLuswPjcDIerdt/WpNSyQ9Y+hg8ujXlvAeWiEhkNZZsYeGLdN0KeTzk\nL/dYWNh5K+Q3dyw0uu9eX1Iq+YEbA2NrYfpp+dhZRETaWIVwT7R+7ov25gGBAw8B7wP4U6OTxVbG\nKx8Hyz/D0eO/YucQEZHFZnRbUH9nvByDQyU/cI9DdRbcFTuHiIgskfuB2ovuPiV2kkZTyQ+Qu6eQ\n3wW3Z7GziIjIkri5Azr+GjvFYFDJLxW/Ax6s6N7yIiKtYhwwrgbcGjvJYFDJL507ILVwP0cREWl+\ntwGWE3alKz2V/NJ5BpLXw42eRUSk+d3qUH3YvfP+vuWmkl8K7u6Q3gw3pLGziIjIoqTA7TmkbXE+\nHlTy9fBH+G8CT8bOISIi/boHmFUFbomdZLCo5JfebeFSuqti5xARkX5dCSQToPzb2XZSyS8ld58P\n2bVwedr7PRdFRCS++cBVGaS/8za6/apKvj6uhhcS+HfsHCIi0qtbgDeqhOF821DJ18cdkMzUlL2I\nSLO63CF50t2fip1kMKnk68DdOyC9En6bhtWbIiLSPN4AbnRIfxc7yWBTydfPr2BSAjfFziEiIgu5\nDFhgtNlUPajk68bdx0DyMPwsj51FREQ6OXB+Clzv7i/FTjPYVPJ1lf4U7qrAs7GDiIgIEO4m+1wC\nfkHsJDGo5OvrWkimw69i5xAREQAuyCF5irATTttRyddRuGY+/RVclMGs2HFERNrcC8BfKpCe307X\nxnenkq+/X4Rbz14YO4eISJv7KVCZCVweO0ksKvk6Cws7fDSck8K82HFERNrUROCXOWQXuPuc2Gli\nUck3xjl0Y0fRAAAPHklEQVQwpQq/jZ1DRKRNnQOkc4Afx04Sk0q+Adz9OeBK+LZG8yIig+5V4Oc5\nZOe6+7TYaWJSyTeMnwmTqnBR7CAiIm3m+0A+Gzg/dpLYVPINUozmfw9npmFLRRERabyXKc7Fn+Pu\nM2KniU0l31D+DZiaw9mxg4iItIkzHJhJWFrf9lTyDeTuEyA/B87Nw/WaIiLSOP8ALjFIv+buM2On\naQbWpvsDDBozGwrJ87DvGnCdxc4jIlJOOfDeDB5/GtKt3D2LnagZaCTfYO4+G9JT4E8Gd8eOIyJS\nUqOBx6qQfk4F30Uj+UFgZhbuULfx1jCmCknsSCIiJTIDeGcK0651zw6PnaaZaCQ/CMKeyekJ8FQF\nzosdR0SkZL4FTE8h/1LsJM1GJT9I3P0R8PPg67luRSsiUi8PABcA2Rnu/krsNM1G0/WDyMyWh+RJ\n2HZ9uK8K1diRRERa2Bxg8xQm/AvSHXQu/q00kh9E4SYJ6VHwUEWXcIqILK3TgfE5pEeq4Hunkh9k\n7n4v8DM4LYexseOIiLSoewjT9PlX3V3nQPug6foIzGwFSJ6CbdeBe6pQix1JRKSFzAY2TeGVRyHd\nUaP4vmkkH4G7z4L0MHjY4IzYcUREWsyJDi9lkB6lgu+fSj4Sd38A/Kvhbkl/jR1HRKRFXAJcapB/\n1t3/GztNs9N0fURmVoHqzbDSbvCfKqwbO5KISBP7D7BdDgsucc8/HTtNK1DJR2Zmq0HyBGy/Gtyt\n3fBERHo1E9g6hRefgfS97j43dqJWoOn6yNx9CqQHwwMGX48dR0SkCTnwaYfxCyA9UAW/+FTyTcDd\n7wM/Fc4BLo0dR0SkyVwAXGOQHa3z8EtG0/VNItzExi6E6qfhdoNdYkcSEWkCfwX2cfBz3f3U2Gla\njUq+iZhZDaq3wNCd4R9V2Dh2JBGRiJ4Ats9g3s2QH6DL5ZacSr7JmNkq4ba0620IjySwWuxIIiIR\nvApsl8LkZ4t96d+InagV6Zx8k3H36ZDuBS/PhP0ymB87kojIIJsJ7JHC5CmQ7qWCHziVfBNy93GQ\n7gMPZ3Csh5WlIiLtYAGwfw7PzIN0N3d/OXaiVqaSb1Lu/hDkR8KVBmfGjiMiMggc+KTD33PIPuLu\nT8ZO1OpU8k3M3a8GTg8l//PYcUREGux04HKD/BPu/vfYacpAJd/8zgbOgxOBc2NnERFpAAfOIvy4\n4xR3vypunvJQyTc5D5c/fAn4LnyZ8A9B5+hFpCyc8LPtmwBfc/fz4uYpF11C10LM7HTgO3Aa8D3A\nIicSEVkaGXCcw0UGnOjuOi9ZZyr5FmNmJwPnweeB81HRi0hr6gCOcrgK8GPdfXTsRGWkkm9BZnYc\n8Ev4DPArdNZFRFrLPODgHG7OwQ9z9z/GTlRWKvkWZWZHg10CHwcuMd2iVkRawyxgvxz+nkL+UXe/\nJXaiMlPJtzAzOxTsCjjQ4AqDIbEjiYj0YzqwZwaPzYfsw+5+T+xEZaeSb3Fm9lGoXAsfrsC1FVg2\ndiQRkV5MBj6UwdOzINvd3R+JnagdqORLwMz2hMqNsGsCN1Zg+diRRES6eRnYNYXx0yHd1d2fiJ2o\nXajkS8LMdoHqzbDZELipCuvHjiQiAjwHfCiFiZMh3dndx8ZO1E60LLsk3P1uyN4HT06CkSncHzuS\niLS9G4CtM5j4IqSjVPCDTyVfIu4+BtKtYPpDsIvDRbEjiUhbSgmbdu0PzL0R0q3d/aXIodqSSr5k\n3P11yD4E6YXhOvoTCZtOiIgMhknAbhn8IAe+DPlB7j4zdqp2pXPyJRY2zbGfwQeAa6qwRuxIIlJq\nDwAHpvC/GZAepDvJxaeRfIm5+6/Ad4UHpsPmKdwbO5KIlJIDPwV2cpjyKKRbqOCbg0q+5Nz9Xki3\ngP89HM7T/xDdxU5E6mcWcISH+2lkF0C2k7u/GjuVBJqubxNmlgDfAb4C++YwugJvix1LRFraM8D+\nKYztgOxY3Qe++ajk24yZ7QvVy2Hd5eC6BLaJHUlEWtK1wFEZdIyD9KPu/lTsRPJWmq5vM+5+E2Rb\nwqtPwCiHs4AFsWOJSMuYD3wJ+Bgw70/F5XEq+CalkXybMrNlgDPAToNNcrg0ge1ixxKRpnY/cGwK\nYw38y8D5rhJpahrJtyl3n+/up4NvA889Bds7nArMiR1NRJrOTOBzwI7AuDHgW7n7j1XwzU8jecHM\nasApUDkL3m5wSQI7x44lIk3hRuCzKbzeAdlXgF+4exY7lSwelby8ycw2huolkO0AxwHnACvFjiUi\nUUwE/l8ebmFduQXyz7r7hNipZMloul7e5O7PQrYjcCL8Zi5snMJfYscSkUHlwG+BERlcPx04AvK9\nVfCtSSN56ZWZvR2qv4Fsdzjc4QKD1WPHEpGGGgt8OoO/V8FGg5/i7v+LnUoGTiN56ZW7vwjZnsDR\ncPUbsHEGf0C75YmUUQfh9NymOdz/KrCHe36MCr71qeSlTx78DrIRMP16OBzYO4cnYkcTkbp5DNgm\nha86LDgP0k3c/fbYqaQ+VPKySO4+yT0/GDgQ7ngZtgCOcngxdjQRGbAJhH/H2wFPPw2+nbt/2d1n\nx04m9aOSl8Xm7n+CdCPwE+HKqfCuHL4ITIkdTUQW2zTCnhjvyuHKaeCfg3Qbd38sdjKpPy28kwEx\nsxWAk6F6Giy7DJxWhZOAFWJHE5FezQN+DpyVwewOyM4BfuTub0QOJg2kkpelYmarA1+DyokwDDgz\ngc8AtcjJRCTIgCuAr6bwagX818CZ7j4xcjAZBCp5qQsz2wDsTPAjYYMMzk7gEHRGSCSWHLgG+EYK\n/02gcgPkXwn7YUi70E9gqQt3H++eHw1sCRNuCyvxR2ZwG7rsTmQwOXAdsFkKhwEv3Am81z3bXwXf\nflTyUlfu/h/3bB/gA/DUo7AnsGsGD8aOJlJyDtwEbJXCQcBz9wDvd0/3cvdH4maTWDRdLw1jZgZ8\nBJIfQroxbJvBKdXwA0jn7EXqYwHwR+CHGfyrCtX7IPu6u/89djKJTyUvDWdmFWBvqH4Rsl1hzRRO\nKhborRo7nkiLmgT8GvhpCq8nUL0bsu8Ad+kWsNJJJS+Dysw2B74AlaOgVoVjKvB54D2xo4m0iMeA\nCxyudMg7IL8U+Km7Pxk5mDQhlbxEUVx691lIPg/p6rB7Dl+swB5oqYhITx2ExXQ/zuDhKiSvQHo+\ncLG7T4scTpqYSl6iMrMhwMcg+RKkW8FGKZycwFHA0NjxRCJ7nTAl/5MUJieQ3APpj4Gb3D2LHE5a\ngEpemkKxSO99UDkZ/EBYIYfjq3ACMDx2PJFB9k/gp8DlOWQp5KMJU/L/iRxMWoxKXppOuJc9J0L1\nOPChsC9wtMHewDKR04k0ylzgRuAnGTxQheRVSC8gTMnrlq8yICp5aVrF/vhHQ/IZSLeElVM4IoEj\ngVGARU4osrQWALcDfwD+mMHcKiT3FVPyN7p7GjeftDqVvLQEM9sUOBKSoyFdCzZI4dgEPgFsGDue\nyBLIgL8Tiv3qFGYkUBsLHb8HrtKudFJPKnlpKWZWBXYBjoTqIZAtB+/N4PAqfAxYN25AkV458BBw\nJXBlClMSqL0EHZcR2v4/urZdGkElLy3LzIYC+0PlMGAvyBN4XwaHVeFgYO3ICaW9OTCG0OGXp/BK\nAsnrkF5OaPtHVOzSaCp5KQUzWwXYDyqHg+8OVGHHovA/ikb4MnieIRT7ZSk8n0AyHdI/FN+8T5e+\nyWBSyUvpmNkw4KNQPRzyD4FXYEQKeyewO7AzugZf6mc2cA9wB3BzCs8kUJ0N2TWEYr/L3TuiRpS2\npZKXUisKfzdgd6jtAx1rQ5LD+x32qobSH4l22ZPFlwKPEkr91gweqkBqUJsIHbcANwC3uPu8qDFF\nUMlLGyk23BkB7AGVPcE+GBburZLCnlXYw0Lprx85qTQXB54jlPptDnfmMLsaRuv5HeC3F08+p3Ps\n0mxU8tK2ii11RwF7QLJ32FYXC1vrdp/aXyFqTolhEnAnobtv6YDXamApVB+G9JbiiUd1Hbs0O5W8\nSMHMVgU+COwBtb2hYx1IHEblMKoK2xAe70TT+2XiwCvAI8B9wC0pPJWE52pPF1PwtwP3uvusWClF\nBkIlL9KLblP7uwO7Qm1UKH2AFTLYxmC7CmxLV/FrB77WMIVQ6I8A/3B4OAvXrUO38+p3AHe6+8Ro\nMUXqQCUvspjMbDXeHM7btpCMCgv5IBT/tkXxdx/xq/jjceAl4PFuj4c64OVaeD6ZCf4PyB4mNP6j\n7v5KpLAiDaGSF1kKZrY6XcW/DSQ7QMda4dkVu434twY2ImzB+7ZoectrDvA0XWX+rwwed5hZjNCr\nb4Qnsn/QNYx/QQvlpOxU8iJ11qP4O0f8a3W9YsUM3uEwIgml3/0xHKhFSN3s5gETgHHA+G4fx6bh\n86lFmeMwZDwseJSuxv838JIKXdqRSl5kEBTX6/do9Oq7oLpRONfvxUq+CrB2B2xUhXdV4B09ftmq\nlPMUQAdhav0tJZ7BuBwmdzvysRxqr0H+PKTPd3vxc8AT7j57UKOLNDGVvEhkZlYjXJzf4yCgNgJ8\nQ0hX7Hp1LYe3ZbA6sEYVVq/Aaiz8WAVYGVip28cVafwVARkwA5hePLp/3tv3pmYwNYf/EUo873wj\nh9pk8J4l3vnxZV26JrJ4VPIiTa7Yl/8dhJV8a7NQo1dXh+qa4KtB+jbwfub6l89ghTyU/jKd797t\nY1+fhxRdn3c/WHjDYRrwRgXmVPv+vavzoDITbDr4NEingHc2/jTgRbpKfIK7L+j7vURkcankRUqi\nuOxvKGEo330Yv1KPr1cGEvpv9sVt/1n0P3SfDszU3u0icajkRURESkrbdomIiJSUSl5ERKSkVPIi\nIiIlpZIXEREpKZW8iIhISankRURESkolLyIiUlIqeRERkZJSyYuIiJSUSl5ERKSkVPIiIiIlpZIX\nEREpKZW8iIhISankRURESkolLyIiUlIqeRERkZJSyYuIiJSUSl5ERKSkVPIiIiIlpZIXEREpKZW8\niIhISankRURESkolLyIiUlIqeRERkZJSyYuIiJSUSl5ERKSkVPIiIiIlpZIXEREpKZW8iIhISank\nRURESkolLyIiUlIqeRERkZJSyYuIiJSUSl5ERKSkVPIiIiIlpZIXEREpKZW8iIhISankRURESkol\nLyIiUlL/H9wo0qFMNrZ8AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1654ba59588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y3_train.value_counts().plot.pie(autopct = '%1.2f%%')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cust_group</th>\n",
       "      <th>x_1</th>\n",
       "      <th>x_2</th>\n",
       "      <th>x_3</th>\n",
       "      <th>x_4</th>\n",
       "      <th>x_5</th>\n",
       "      <th>x_6</th>\n",
       "      <th>x_7</th>\n",
       "      <th>x_8</th>\n",
       "      <th>x_9</th>\n",
       "      <th>...</th>\n",
       "      <th>x_1561</th>\n",
       "      <th>x_1562</th>\n",
       "      <th>x_1563</th>\n",
       "      <th>x_157-99</th>\n",
       "      <th>x_1571</th>\n",
       "      <th>x_1572</th>\n",
       "      <th>x_1573</th>\n",
       "      <th>x_1574</th>\n",
       "      <th>x_15710</th>\n",
       "      <th>x_15711</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5000</th>\n",
       "      <td>1</td>\n",
       "      <td>0.104167</td>\n",
       "      <td>0.441823</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5001</th>\n",
       "      <td>1</td>\n",
       "      <td>0.145833</td>\n",
       "      <td>0.297548</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5002</th>\n",
       "      <td>1</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>0.822649</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5003</th>\n",
       "      <td>1</td>\n",
       "      <td>0.229167</td>\n",
       "      <td>0.787980</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5004</th>\n",
       "      <td>1</td>\n",
       "      <td>0.041667</td>\n",
       "      <td>0.023332</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 356 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      cust_group       x_1       x_2  x_3  x_4  x_5  x_6  x_7  x_8  x_9  \\\n",
       "5000           1  0.104167  0.441823  -99  -99  -99  -99  -99  -99  -99   \n",
       "5001           1  0.145833  0.297548  -99  -99  -99  -99  -99  -99  -99   \n",
       "5002           1  0.125000  0.822649    0    0    0    0    0    0    0   \n",
       "5003           1  0.229167  0.787980  -99  -99  -99  -99  -99  -99  -99   \n",
       "5004           1  0.041667  0.023332    0    0    0    0    4    4    0   \n",
       "\n",
       "       ...     x_1561  x_1562  x_1563  x_157-99  x_1571  x_1572  x_1573  \\\n",
       "5000   ...          0       1       0         0       0       1       0   \n",
       "5001   ...          0       1       0         0       0       0       0   \n",
       "5002   ...          0       1       0         1       0       0       0   \n",
       "5003   ...          0       1       0         1       0       0       0   \n",
       "5004   ...          0       1       0         1       0       0       0   \n",
       "\n",
       "      x_1574  x_15710  x_15711  \n",
       "5000       0        0        0  \n",
       "5001       1        0        0  \n",
       "5002       0        0        0  \n",
       "5003       0        0        0  \n",
       "5004       0        0        0  \n",
       "\n",
       "[5 rows x 356 columns]"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_x1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cust_group</th>\n",
       "      <th>x_1</th>\n",
       "      <th>x_2</th>\n",
       "      <th>x_3</th>\n",
       "      <th>x_4</th>\n",
       "      <th>x_5</th>\n",
       "      <th>x_6</th>\n",
       "      <th>x_7</th>\n",
       "      <th>x_8</th>\n",
       "      <th>x_9</th>\n",
       "      <th>...</th>\n",
       "      <th>x_1561</th>\n",
       "      <th>x_1562</th>\n",
       "      <th>x_1563</th>\n",
       "      <th>x_157-99</th>\n",
       "      <th>x_1571</th>\n",
       "      <th>x_1572</th>\n",
       "      <th>x_1573</th>\n",
       "      <th>x_1574</th>\n",
       "      <th>x_15710</th>\n",
       "      <th>x_15711</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5000</th>\n",
       "      <td>1</td>\n",
       "      <td>0.104167</td>\n",
       "      <td>0.441823</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5001</th>\n",
       "      <td>1</td>\n",
       "      <td>0.145833</td>\n",
       "      <td>0.297548</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5002</th>\n",
       "      <td>1</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>0.822649</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5003</th>\n",
       "      <td>1</td>\n",
       "      <td>0.229167</td>\n",
       "      <td>0.787980</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>-99</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5004</th>\n",
       "      <td>1</td>\n",
       "      <td>0.041667</td>\n",
       "      <td>0.023332</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 356 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      cust_group       x_1       x_2  x_3  x_4  x_5  x_6  x_7  x_8  x_9  \\\n",
       "5000           1  0.104167  0.441823  -99  -99  -99  -99  -99  -99  -99   \n",
       "5001           1  0.145833  0.297548  -99  -99  -99  -99  -99  -99  -99   \n",
       "5002           1  0.125000  0.822649    0    0    0    0    0    0    0   \n",
       "5003           1  0.229167  0.787980  -99  -99  -99  -99  -99  -99  -99   \n",
       "5004           1  0.041667  0.023332    0    0    0    0    4    4    0   \n",
       "\n",
       "       ...     x_1561  x_1562  x_1563  x_157-99  x_1571  x_1572  x_1573  \\\n",
       "5000   ...          0       1       0         0       0       1       0   \n",
       "5001   ...          0       1       0         0       0       0       0   \n",
       "5002   ...          0       1       0         1       0       0       0   \n",
       "5003   ...          0       1       0         1       0       0       0   \n",
       "5004   ...          0       1       0         1       0       0       0   \n",
       "\n",
       "      x_1574  x_15710  x_15711  \n",
       "5000       0        0        0  \n",
       "5001       1        0        0  \n",
       "5002       0        0        0  \n",
       "5003       0        0        0  \n",
       "5004       0        0        0  \n",
       "\n",
       "[5 rows x 356 columns]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_x1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#分数据\n",
    "X1_train,X1_val,y1_train,y1_val= train_test_split(train_x1,y1_train,test_size=0.1,random_state=2)\n",
    "X2_train,X2_val,y2_train,y2_val= train_test_split(train_x2,y2_train,test_size=0.1,random_state=2)\n",
    "X3_train,X3_val,y3_train,y3_val= train_test_split(train_x3,y3_train,test_size=0.1,random_state=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "    class 0       0.91      0.99      0.95       455\n",
      "    class 1       0.33      0.04      0.08        45\n",
      "\n",
      "avg / total       0.86      0.91      0.87       500\n",
      "\n",
      "0.5178266178266179\n"
     ]
    }
   ],
   "source": [
    "#分类\n",
    "#第一个模型\n",
    "clf1 = GradientBoostingClassifier(n_estimators=150, learning_rate=0.05,max_depth=6, random_state=0).fit(X1_train, y1_train)\n",
    "\n",
    "predictions1 = clf1.predict(X1_val)\n",
    "\n",
    "target_names = ['class 0', 'class 1']\n",
    "print(classification_report(y1_val, predictions1, target_names=target_names))\n",
    "\n",
    "val_auc = metrics.roc_auc_score(y1_val, predictions1)#验证集上的auc值\n",
    "print(val_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "    class 0       0.97      1.00      0.98       485\n",
      "    class 1       0.00      0.00      0.00        15\n",
      "\n",
      "avg / total       0.94      0.97      0.96       500\n",
      "\n",
      "0.5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n",
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\metrics\\classification.py:1135: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n"
     ]
    }
   ],
   "source": [
    "#分类\n",
    "#第一个模型\n",
    "gbm2 = XGBClassifier( n_estimators= 50, max_depth= 4, min_child_weight= 2, gamma=0.9, subsample=0.8, \n",
    "                        colsample_bytree=0.8, objective= 'binary:logistic', nthread= -1, scale_pos_weight=1).fit(X2_train, y2_train)\n",
    "predictions2 = gbm2.predict(X2_val)\n",
    "\n",
    "target_names = ['class 0', 'class 1']\n",
    "print(classification_report(y2_val, predictions2, target_names=target_names))\n",
    "\n",
    "val_auc = metrics.roc_auc_score(y2_val, predictions2)#验证集上的auc值\n",
    "print(val_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "    class 0       0.97      1.00      0.99       487\n",
      "    class 1       0.00      0.00      0.00        13\n",
      "\n",
      "avg / total       0.95      0.97      0.96       500\n",
      "\n",
      "0.5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n",
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\metrics\\classification.py:1135: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n"
     ]
    }
   ],
   "source": [
    "#分类\n",
    "#第一个模型\n",
    "gbm3 = XGBClassifier( n_estimators= 50, max_depth= 4, min_child_weight= 2, gamma=0.9, subsample=0.8, \n",
    "                        colsample_bytree=0.8, objective= 'binary:logistic', nthread= -1, scale_pos_weight=1).fit(X3_train, y3_train)\n",
    "predictions3 = gbm3.predict(X3_val)\n",
    "\n",
    "target_names = ['class 0', 'class 1']\n",
    "print(classification_report(y3_val, predictions3, target_names=target_names))\n",
    "\n",
    "val_auc = metrics.roc_auc_score(y3_val, predictions3)#验证集上的auc值\n",
    "print(val_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7651770451770451\n"
     ]
    }
   ],
   "source": [
    "#第一个模型\n",
    "gbm1 = XGBClassifier( n_estimators= 300, max_depth= 2, min_child_weight= 2, gamma=0.9, subsample=0.8, \n",
    "                        colsample_bytree=0.8, objective= 'binary:logistic', nthread= -1, scale_pos_weight=1).fit(X1_train, y1_train)\n",
    "predictions1 = gbm1.predict_proba(X1_val)\n",
    "pre1 = predictions1[:,1]\n",
    "val1_auc = metrics.roc_auc_score(y1_val,pre1)#验证集上的auc值\n",
    "print(val1_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.797938144329897\n"
     ]
    }
   ],
   "source": [
    "#第二个模型\n",
    "gbm2 = XGBClassifier( n_estimators= 100, max_depth= 4, min_child_weight= 2, gamma=0.9, subsample=0.8, \n",
    "                        colsample_bytree=0.8, objective= 'binary:logistic', nthread= -1, scale_pos_weight=1).fit(X2_train, y2_train)\n",
    "predictions2 = gbm2.predict_proba(X2_val)\n",
    "pre2 = predictions2[:,1]\n",
    "val2_auc = metrics.roc_auc_score(y2_val,pre2)#验证集上的auc值\n",
    "print(val2_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8442584109935239\n"
     ]
    }
   ],
   "source": [
    "#第三个模型\n",
    "gbm3 = XGBClassifier( n_estimators= 100, max_depth= 4, min_child_weight= 2, gamma=0.9, subsample=0.8, \n",
    "                        colsample_bytree=0.8, objective= 'binary:logistic', nthread= -1, scale_pos_weight=1).fit(X3_train, y3_train)\n",
    "predictions3 = gbm3.predict_proba(X3_val)\n",
    "pre3 = predictions3[:,1]\n",
    "val3_auc = metrics.roc_auc_score(y3_val,pre3)#验证集上的auc值\n",
    "print(val3_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8066379212494923"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc = 0.3*val1_auc + 0.3*val2_auc + 0.4*val3_auc\n",
    "auc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#预测\n",
    "test_preds1 = gbm1.predict_proba(test_x1)\n",
    "test_preds2 = gbm2.predict_proba(test_x2)\n",
    "test_preds3 = gbm3.predict_proba(test_x3)\n",
    "\n",
    "test_pre1 = test_preds1[:,1]\n",
    "test_pre2 = test_preds2[:,1]\n",
    "test_pre3 = test_preds3[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:1: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  if __name__ == '__main__':\n",
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  from ipykernel import kernelapp as app\n",
      "C:\\Program Files\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  app.launch_new_instance()\n"
     ]
    }
   ],
   "source": [
    "test_x1['label'] = test_pre1\n",
    "test_x2['label'] = test_pre2\n",
    "test_x3['label'] = test_pre3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(10000, 357)\n"
     ]
    }
   ],
   "source": [
    "test_temps = test_x1.append(test_x2)\n",
    "test_preds = test_temps.append(test_x3)\n",
    "print(test_preds.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "test_preds.sort_index(inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'cust_id'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[0;32mC:\\Program Files\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m   3077\u001b[0m             \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3078\u001b[0;31m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3079\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;31mKeyError\u001b[0m: 'cust_id'",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-72-c56788d2e664>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mSubmission\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'cust_id'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mtest_preds\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'cust_id'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'pred_prob'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mtest_preds\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'label'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mSubmission\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_csv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Submission1.csv'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Program Files\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m   2686\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   2687\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2688\u001b[0;31m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2689\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   2690\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Program Files\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_getitem_column\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m   2693\u001b[0m         \u001b[1;31m# get column\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   2694\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_unique\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2695\u001b[0;31m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_item_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2696\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   2697\u001b[0m         \u001b[1;31m# duplicate columns & possible reduce dimensionality\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Program Files\\Anaconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m_get_item_cache\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m   2487\u001b[0m         \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   2488\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2489\u001b[0;31m             \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2490\u001b[0m             \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_box_item_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   2491\u001b[0m             \u001b[0mcache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Program Files\\Anaconda3\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, item, fastpath)\u001b[0m\n\u001b[1;32m   4113\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   4114\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4115\u001b[0;31m                 \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   4116\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   4117\u001b[0m                 \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0misna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Program Files\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m   3078\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   3079\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3080\u001b[0;31m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3081\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   3082\u001b[0m         \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;31mKeyError\u001b[0m: 'cust_id'"
     ]
    }
   ],
   "source": [
    "Submission = pd.DataFrame({'cust_id': test['cust_id'], 'pred_prob': test_preds['label']})\n",
    "Submission.to_csv('Submission1.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
